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
拆分当前缓冲区时,您可能会注意到它不起作用。