Tabs Vim新标签页不';不匹配文本
我使用Tabs Vim新标签页不';不匹配文本,tabs,match,vim,highlight,Tabs,Match,Vim,Highlight,我使用:match突出显示代码中不符合样式指导原则的问题。以下内容对于我在Vim中打开的第一个窗口非常有用: ~/.vimrc: hi ExtraWhitespace ctermbg=red guibg=red hi NoFunctionSpace ctermbg=red guibg=red match ExtraWhitespace /\s\+$\| \+\ze\t/ 2match NoFunctionSpace /\S(/ 但是,当我转到:tabedit一个文件时,或者如果我使用-p选项和
:match
突出显示代码中不符合样式指导原则的问题。以下内容对于我在Vim中打开的第一个窗口非常有用:
~/.vimrc
:
hi ExtraWhitespace ctermbg=red guibg=red
hi NoFunctionSpace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$\| \+\ze\t/
2match NoFunctionSpace /\S(/
但是,当我转到
:tabedit
一个文件时,或者如果我使用-p
选项和多个文件打开Vim,则只有第一个窗口高亮显示匹配项。我希望所有打开的选项卡都显示匹配项。:match
命令仅适用于当前窗口。要将它们自动应用于每个新窗口,请将它们挂接到WinEnter
事件:
autocmd WinEnter * match ExtraWhitespace /\s\+$\| \+\ze\t/
autocmd WinEnter * 2match NoFunctionSpace /\S(/
您仍然需要原始的
:match
命令,因为初始窗口未触发WinEnter
事件。我发现如果使用BufEnter而不是WinEnter,我可以删除原始的:match
。我还使用了调用matchadd
而不是:match
,因为这样我可以根据需要多次调用它。因此结果:autocmd BufEnter*调用matchadd(“WhitespaceEOL”,“s\+$”)
matchadd()
很好;因此,您仍然可以保留:match
供交互使用。但是BufEnter
是错误的;因为两者的作用域都是窗口。使用:split
拆分当前缓冲区时,您可能会注意到它不起作用。