Vim

Vim 設置 listchars 只顯示不可破壞的空格,不顯示製表符

  • May 10, 2021

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

問題是,^IVim顯示 Tab 字元的方式,因為基本 Tab 與 a 一樣儲存在文件中,Ctrl+I並且^I是 Vim 表示 Ctrl 字元符號的方式。

如果您希望 Tab 在使用 時僅顯示為空格:set list,則應將其設置為在下面'listchars'(請注意,您需要兩個空格,因為該tab:項目需要兩個或三個字元。)當然,有一個技巧可以做到這一點,因為空格通常是:set命令的分隔符,因此您需要使用反斜杠對其進行轉義。

這將起作用:

set listchars=tab:\ \ ,nbsp:·

您也可以tab:\ \ 在選項末尾添加 ,但使用尾隨空格可能看起來有點尷尬。

另一個選項是使用:let&訪問選項值的語法來設置它:

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

第二種方法的一個優點是您還可以對字元串中的特殊字元使用字元串轉義序列,例如用於 nbsp 的中間點:

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

(如果您只想使用簡單的基本 ASCII 字元來保留 vimrc 或它的片段,這可能是一個優勢,例如,當您擔心在使用複制和粘貼將這些片段傳輸到其他系統時保留格式和空格時通過遠端連接。這些天在大多數情況下並不是什麼大不了的事,但我想我還是會提到它。)

引用自:https://unix.stackexchange.com/questions/647468