我的.vimrc
文件中有以下行:
" Highlight macros
highligh Macro cterm=bold
match Macro /\v(\/\/[^\n]*|\/\*(\_[^*]|\*\_[^/])*)@<!<[A-Z_]{2,}>/
基本上它突出显示大写文本而不是c ++注释(即代码库中的宏我正在处理)。这很好,但它有时只能起作用。如果我使用vim myfile.cpp
打开文件然后显示,但是当我使用:tabe otherfile.cpp
打开新标签时,突出显示不会出现在新文件中(但保留在旧标签中)。
答案 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