如何在vim中显示隐藏字符?


54

如何配置vim仅在键入这些字符时显示诸如制表符或空格之类的隐藏字符?写入文件时,我不希望将制表符和/或空格替换为“>”或“ _”等特殊字符。


1
您肯定需要展示空间吗?典型的解决方案是使用:set list。那可以得到空格以外的所有东西。
克里斯·哈珀

Answers:


64

您可以使用以下命令

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

显示所有非空格字符。因此,空格是唯一不会出现的东西。

如果您也确实需要标记空格,则需要尝试一些不太好的方法。就像是

:%s/ /█/g

将用块字符替换所有空格。然后,您需要先撤消它,然后再进行编写。您可以重新映射您的写命令吗

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

只是一个建议。我还没有尝试过。


谢谢您的帮助; 您的建议效果很好。但是,我注意到有时打开某些文件时会看到“> ---”(指示选项卡)。有没有一种方法可以使制表符在键入时显示?
dan0

@ dan0您的意思是仅在插入模式下?我不知道。我对此表示怀疑。您可以进行一些映射功能,以便在进入插入模式时,它首先调用该:set listchars命令并将其设置为空,然后在退出插入模式时再次调用它。但是我对地图的了解还不够。
克里斯·哈珀

@乔纳森·科马尔(JonathanKomar)“进入无名单”
弗拉迪斯拉夫·多夫加莱斯(Fladislavs 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插件)

这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.