高亮仅在第一个选项卡/窗口中有效

时间:2014-06-10 22:38:22

标签: vim

我的.vimrc文件中有以下行:

" Highlight macros
highligh Macro cterm=bold
match Macro /\v(\/\/[^\n]*|\/\*(\_[^*]|\*\_[^/])*)@<!<[A-Z_]{2,}>/

基本上它突出显示大写文本而不是c ++注释(即代码库中的宏我正在处理)。这很好,但它有时只能起作用。如果我使用vim myfile.cpp打开文件然后显示,但是当我使用:tabe otherfile.cpp打开新标签时,突出显示不会出现在新文件中(但保留在旧标签中)。

2 个答案:

答案 0 :(得分:1)

您需要使用自动命令将宏匹配与cpp文件相关联。

highlight Macro cterm=bold
au BufNewFile, BufRead {*.cpp,*.hpp,*.ipp} match Macro /\v(\/\/[^\n]*|\/\*(\_[^*]|\*\_[^/])*)@<!<[A-Z_]{2,}>/

这样,每次打开或创建.cpp,.hpp或.ipp文件时,匹配都将生效。

您也可以将该模式更改为*.?pp,除非您希望使用其他不需要匹配的.xpp变体。

答案 1 :(得分:1)

替代BufNewFile,BufRead

的替代解决方案
highligh Macro cterm=bold
au filetype cpp match Macro /\v(\/\/[^\n]*|\/\*(\_[^*]|\*\_[^/])*)@<!<[A-Z_]{2,}>/

只要buffer filetype选项设置为cpp。

,就会触发

在我的vim安装中,它将以下内容与cpp filetype

匹配
" C++
au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp
if has("fname_case")
  au BufNewFile,BufRead *.C,*.H setf cpp
endif