在 VIM 中突出显示额外的空格和固定长度的列

Abh*_*rde 3 vim vimrc

我想使用 VIM 突出显示额外的空格和固定长度的列(例如,一行 80 个字符)

我在我的.vimrc文件中创建了两个 vimrc 规则

highlight ExtraWhitespacea ctermbg=darkred guibg=#382424
match ExtraWhitespacea /\s\+$/
highlight OverLength ctermbg=green ctermfg=white guibg=#592929
match OverLength /\%81v.\+/
Run Code Online (Sandbox Code Playgroud)

现在,问题是 - 如果单独应用,这些规则完全按照我想要的方式运行,但不能一起使用。

我在这里错过了什么吗?我该如何调试?

Ing*_*kat 6

问题是每个:match命令都会覆盖前一个命令的模式;它们不是累积的!因此,有:2match:3match变体。使用其中之一:

highlight ExtraWhitespace ctermbg=darkred guibg=#382424
match ExtraWhitespace /\s\+$/
highlight OverLength ctermbg=red guibg=#525252
2match OverLength /\%81v.\+/
Run Code Online (Sandbox Code Playgroud)

可以使用matchadd()Vimscript 函数创建其他变体。

笔记

  • 从 Vim 7.3 开始,有一个内置'colorcolumn'选项可以突出显示列。
  • 您的设置~/.vimrc仅适用于第一个窗口;即 a:split将创建一个没有那些突出显示的窗口。您可以通过 autocmds(或使用该'colorcolumn'选项)修复该问题。
  • 有更强大和复杂的解决方案来突出显示尾随空白,例如我的ShowTrailingWhitespace 插件。(插件页面有其他插件的链接。)