vimで非表示の文字を表示する方法は?


54

タブやスペースなどの非表示の文字を入力中にのみ表示するようにvimを構成するにはどうすればよいですか?ファイルの作成時にタブやスペースを「>」や「_」などの特殊文字に置き換えたくないのですが。


1
表示するスペースは間違いなく必要ですか?典型的な解決策はを使用すること:set listです。スペースを除くすべて取得できます。
クリスハーパー

回答:


64

次のコマンドを使用できます

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
:set list

空白ではないすべての文字を表示します。したがって、表示されないのはスペースだけです。

同様にマークするためにスペースが絶対に必要な場合は、あまり良いものを試す必要があります。何かのようなもの

:%s/ /█/g

すべてのスペースをブロック文字に置き換えます。次に、書く前に元に戻す必要があります。あなたはあなたの書き込みコマンドを再マッピングすることができます

cmap :w :%s/█/ /g<CR>:w

ただの提案。私はそれを試していません。


助けてくれてありがとう; あなたの提案は非常にうまくいきます。ただし、特定のファイルを開くと、「> ---」(タブを示す)が表示されることがあります。入力中にのみタブ文字が表示されるようにする方法はありますか?
dan0

@ dan0挿入モードのときだけですか?知りません。ちょっと疑いがあります。いくつかのマッピング関数を作成して、挿入モードに入ると、最初に:set listcharsコマンドを呼び出して何も設定せず、挿入モードを終了するときに再度呼び出すようにすることができます。しかし、私はそれを行うにはマップについて十分に知りません。
クリスハーパー

@JonathanKomar「set nolist」
ヴラディスラフスDovgalecs

1
使用してspace:␣も私の作品を: :set listchars=eol:$,tab:>-,trail:~,space:␣
loxaxs

15

vimの最新バージョンでもスペースを表示できます。(vim 7.4.1689で確認済み)。

:set list
:set listchars=tab:→\ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»

4

私の場合、私はnbspと戦わなければなりませんでした。

:set listchars=nbsp:☠,tab:▸␣
:set list

☠の代わりに␣を使用することもできます

上記のvim構成が「見えない奇妙な」スペースを強調表示し、さらにタブを強調表示する例です(末尾の空白のvimプラグインを使用しているため、赤色)

ここに

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.