Vimは、タブではなく壊れないスペースのみを表示するようにlistcharsを設定します。

Vimは、タブではなく壊れないスペースのみを表示するようにlistcharsを設定します。

では または にvim設定したいと思います。しかし、私はタブに興味がありません。nbsp!·

私のものには.vimrc次のものがあります。

 set listchars=nbsp:·
 set list

しかし、vimセッションを開くと、タブはまだ^I

走る

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

...エラーなしで実行され、変更を確認できます。

走れば

:set listchars=nbsp:!,tab:>

または

:set listchars=nbsp:!,tab:

わかりました。

E474: Argument invalide: listchars=nbsp:!,tab:>

ここで何が起こっているのでしょうか?listcharsVimでタブを強調表示せずに強調表示するようにどのように設定できますかnbsp

走るVIM - Vi IMproved 7.4

答え1

問題は^IVim方式です。いいえタブ文字が表示されるのは、必要なタブがaのようにファイルに保存され、VimがCtrl文字記号を表す方法なのでですCtrl+I^I

タブが使用されている場合にのみ空白として表示されるようにするには、以下のよう:set listに設定する必要があります'listchars'。 (項目に2〜3文字が必要なので、スペースが2つ必要であることに注意してくださいtab:。)もちろん、トリックがあります。スペースは通常:setコマンドの区切り文字であるため、バックスラッシュを使用してエスケープする必要があります。

これは働きます:

set listchars=tab:\ \ ,nbsp:·

tab:\ \オプションの末尾にを追加することもできますが、末尾のスペースは少しぎこちないように見えることがあります。

別のオプションは、:letオプション値にアクセスするための構文を使用して設定することです。&

let &listchars = 'tab:  ,nbsp:·'

2番目のアプローチの1つの利点は、nbspの中間点など、文字列の特殊文字に文字列エスケープシーケンスを使用できることです。

let &listchars = "tab:  ,nbsp:\xb7"

(単純なデフォルトのASCII文字のみを使用してvimrcまたはそのフラグメントを保存する場合は、たとえばコピーと貼り付けを使用してこれらのフラグメントを別のシステムに転送するときにフォーマットとスペースを保存することが心配される場合、これは利点です。最近では大規模で、ほとんどの場合リモートで接続することは大きな問題ではありませんが、それでも言及する必要があると思いました。)

関連情報