让制表符的外观不同于单纯的空白
如何让vim中的制表符看起来和空格不一样(比如高亮显示)。
这对写Python代码会很有帮助。
6 个回答
5
使用 list
和 listchars
这两个选项,像这样:
:set list
:set listchars=tab:>-
7
很多人提到了 'listchars' 和 'list' 这两个选项,但我想再分享一个有趣的替代方案:
if &expandtab == 0
execute 'syn match MixedIndentationError display "^\([\t]*\)\@<=\( \{'.&ts.'}\)\+"'
else
execute 'syn match MixedIndentationError display "^\(\( \{' . &ts . '}\)*\)\@<=\t\+"'
endif
hi link MixedIndentationError Error
这个设置会查看你当前的 'expandtab' 配置(也就是你是用硬制表符还是用空格来模拟制表符),然后会高亮显示那些看起来像是正确缩进但实际上格式不对的地方。它的工作原理是通过查看制表符的位置,所以如果你用制表符来缩进,后面跟着的空格用于简单对齐(而且这些空格不是 'tabstop' 的倍数),就不会被标记为错误。
还有更简单的选项:如果你只想把错误文件中的制表符高亮显示为鲜红色(或者你设置的错误颜色),可以这样做:
syn match TabShouldNotBeThereError display "\t"
hi link TabShouldNotBeThereError Error
或者如果你想把行首的空格视为错误,可以这样设置:
syn match SpacesUsedForIndentationError display "^ +"
hi link SpacesUsedForIndentationError Error
再补充一些想法……更多信息可以在这里找到:
:help 'expandtab'
:help 'tabstop'
:help 'listchars'
:help 'list'
:help :exe
:help let-option
:help :hi-link
:help :syn-match
:help :syn-display
16
我用的是这样的东西:
set list listchars=tab:»·,trail:·,precedes:…,extends:…,nbsp:‗
这个需要 Vim7,我不太确定在浏览器里显示得怎么样,因为它用了些奇怪的 Unicode 字符。使用一些特别的字符是个好主意,这样你就能分辨出制表符和你自己输入的内容。
除了显示制表符,显示行末的空格也很有用,这样你就知道要把它们去掉(这些空格很烦人)。