使制表符看起来不同于空格

9
如何使vim中的制表符看起来与空格不同(以示例高亮)。
这对于Python代码非常有用。
6个回答

16

我使用类似这样的东西:

set list listchars=tab:»·,trail:·,precedes:…,extends:…,nbsp:‗

需要 Vim7,而且我不确定这个在浏览器中会显示得多好,因为它使用了一些奇怪的 Unicode 字符。使用一些奇特的字符很好,这样你就可以将制表符与你自己输入的内容区分开来。

除了显示制表符外,显示行尾处的空格也很有用,这样你就知道要将它们删除(它们很烦人)。


哇,我几周前就在找这个,但是没有真正找到任何东西(我并没有进行详尽的搜索)...谢谢 :) - Terence Honles
你能告诉我们如何将这些字符输入到你的 .vimrc 文件中吗? - glenn jackman
最简单的方法是复制/粘贴,或使用“Ctrl-V u####”其中####是4位Unicode代码点。 - Brian Carper

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

5
使用listlistchars选项,例如这样:
:set list
:set listchars=tab:>-

3
如果您按照以下步骤进行操作:
:set list

如果存在制表符,则所有TAB字符将显示为^I,所有尾随空格将显示为$

使用listchars,您可以控制任何空格使用的字符。因此,

:set listchars=tab:...

:set list一起使用可将TAB键显示为...


2
此外,在剪切和粘贴文本时,禁用制表符和空格的显示非常有用。您可以使用以下方法实现:
:set list!

您可以通过重复执行该命令来重新启用它。


2
< p > glenn jackman 询问如何输入字符(我假设他指的是像“»”这样的字符)。

Brian Carper 提供了一种使用字符的Unicode索引号的方法。由于许多这些独特外观的字符是二合字[:help digraphs],您还可以使用CNTL-k快捷键,这通常更容易记住。

例如,您可以在插入模式下通过键入CNTL-k和两个">"字符来生成“»”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接