vimで末尾のスペースを表示する


10

端末vimの末尾の空白の見栄えの良い甘い表示が欲しいのですが。これにより、ファイルを閉じる前にそれらを削除できます。

私はこの質問が非常に人気があることを承知しており、SOですでに数十の回答を見つけました。残念ながら、満足できるものがまだ見つかりませんでした...

そのため、収集した情報と見つけた解決策を要約してみます。

解決策1:末尾のスペースを手動で強調表示する

highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()

末尾の空白を強調表示する

長所:

  • 使いやすい
  • 速い
  • と互換性があります cursorline

短所:

  • 選択された色は、色が手動で設定されているため、他の配色と互換性がありません red
  • 大きな赤い背景のブロックはあまり美的ではありません

解決策2:リスト機能を使用する

set list
set listchars+=trail:◦

ここに画像の説明を入力してください ここに画像の説明を入力してください

長所:

  • 使いやすい
  • 速い

短所:

  • :set cursorline有効になっている場合は問題
  • の専用色list/trailは設定できません。他のリスト文字と同じである必要があります

解決策3:隠蔽機能を使用する

syn match WhiteSpace "\s\+$" containedin=ALL conceal cchar=◦
set conceallevel=2 
set concealcursor=nv
highlight Conceal ctermfg=red

ここに画像の説明を入力してください ここに画像の説明を入力してください

長所:

  • 最初のソリューションよりもきれい

短所:

  • 背景はカーソルラインの背景と同じではありません
  • 他の隠蔽ルールに干渉する可能性があります
  • 選択した色は、常に配色と互換性があるわけではありません
  • 古いバージョンのVimと互換性がありません

私の質問

列挙されたソリューションのどれがパフォーマンスと互換性の点で最も適切であり、どのようにしてすべての長所と短所のすべてを取得できますか?

つまり、次のような解決策を見つけたいと思います。

  • ハイライトの後続色は選択したカラースキームと一致します
  • この色ははっきりと見えますが、目に対してあまり攻撃的ではありません
  • cursorline(背景と前景)と互換性があります `
  • 隠蔽を使用する可能性のある他のプラグインと互換性があります
  • 末尾の文字は任意のUnicode文字に設定できます

赤が気に入らない場合は、別の色を選択してください。色を別の配色と互換性があるようにするには、特定の色を使用する代わりに、色グループ名にリンクします(例:):hi link ExtraWhitespace CursorLine。を参照してください:help hi-link
garyjohn、2015年

回答:


4

パフォーマンスに関しては、これらのどれも違いを生むべきではありません。Vimは主に複雑な構文パターンに悩まされます。ここのパターンは非常に単純です。

ハイライトの色を選択したカラースキームと一致させるには:hi link、既存のグループを使用します。通常はそうなりますError。もちろん、これは、カラースキームを頻繁に切り替える(まったく異なる)場合にのみ重要です。それ以外の場合、適切な色を直接(ソリューション1のように)使用しても問題ありません。

解決策1:末尾のスペースを手動で強調表示する

私はこれに行きますが、matchadd()代わりにを使用し:matchます。これにより、後者がカスタムハイライト用に残されます。また、clearmatches()粗すぎます。すべての一致を削除するため、プラグインに影響を与える可能性があります。クリーンで強力な実装(特定のファイルタイプの例外も含まれます)については、ShowTrailingWhitespaceプラグインを使用してください。はい、それははるかに大きな解決策ですが、影響はまだわかりません。

解決策2:リスト機能を使用する

これはそれ自体が便利な機能であり、永続的にオンにしておくと、タブ文字のカーソル位置に影響を与えるので、お勧めしません。

解決策3:隠蔽機能を使用する

それは確かに機能を使用するいくつかの構文とプラグインを妨害します。悪いアイデア。


だから、あなたの答えから私は余分なスペースをマークするためにカスタムのユニコード文字を使用できるようにする解決策があることを理解しています。この質問は、私が最初に思ったよりも確かに難しいです。
nowox

右、カスタム文字はでのみ機能し'listchars'ます。私にとって、強調表示は十分すぎる(特に積極的な色の場合)。
Ingo Karkat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.