web-dev-qa-db-ja.com

すべてではありませんが、vimでいくつかの空白文字を表示していますか?

Vimでset listおよびset listcharsオプションを使用しています。 set listcharsをカスタマイズして、末尾のスペースなどを表示しますが、タブは表示しません。特定の種類の空白を表示しないように指定することはできますか?

私はこれを試しました:

set listchars=tab:,trail:·,extends:>,precedes:<,nbsp:%

しかし、.vimrcをロードするときに構文エラーが発生しました。

3
Andrew Ferrier

これは技術的には不可能ですが、タブに表示する文字として、特殊なUnicode空白文字(通常のスペース文字ではない)をだまして入力できることを発見しました。これはまだvimのhl-NonTextハイライトカラーを使用していますが、目立たないことは確かです。

言い換えれば、これ(または同様のこと)を行います:

set listchars=tab:  ,trail:·,extends:>,precedes:<,nbsp:%

tab:の後の2文字は、not正則スペース文字です + 2002 です。あなたはvim自体でそれらを入力することができます Ctrl-Vu22 (挿入モードの場合)。

これまでのところ、厄介な副作用には気づいていません。

4
Andrew Ferrier

残念ながら、それは不可能です。オンまたはオフにできるのは:set listのみであり、'listchars'で定義していない要素については、デフォルトが使用されます。

いくつかの副作用(ソフトラッピングに影響するなど)があるため、常に:set listで操作することはお勧めしません。

末尾の空白を強調表示することだけが心配な場合は、他の方法でこれを行うプラグインがあります。実際、私はそのために ShowTrailingWhitespaceプラグイン を作成しました。このページには代替案へのリンクがあります。

4
Ingo Karkat