我的.vimrc
中有以下内容syn match ErrorLeadSpace /^ \+/ " highlight any leading spaces
syn match ErrorTailSpace / \+$/ " highlight any trailing spaces
syn match Error80 /\%>80v.\+/ " highlight anything past 80 in red
au FileType c match error /\s\+$\|\%>80v.\+\|[ ][ ]\+\|\n\n\n\+\|,[^ ]\|^[ ]\+[^\*]\|(\s\+\|\s\+)/
au FileType c highlight error ctermbg=red guibg=red ctermfg=blue guifg=blue
au FileType h match error /\s\+$\|\%>80v.\+\|[ ][ ]\+\|\n\n\n\+\|,[^ ]\|^[ ]\+[^\*]\|(\s\+\|\s\+)/
au FileType h highlight error ctermbg=red guibg=red ctermfg=blue guifg=blue
因此,vim突出显示前导/尾随空格或超过80个字符的行中多余字符。
但是,目前我想禁用此错误'高亮。 目前,我通过在打开的文件中使用命令" match none"来实现此目的。然而,当我将此命令放在.vimrc文件中时,这不起作用。
如果对.vimrc进行最少的更改,我怎样才能实现这一目标?
答案 0 :(得分:3)
match none
命令在.vimrc
文件中不起作用,因为您将突出显示规则放入au
命令(这是一个非常好的主意)。每次编辑新的C文件时都会执行au
,而.vimrc中的match none
命令将无用,因为它很久以前就已经加载了。
您提供的代码中存在几个问题;我在下面解释一下。但你可以这样做,例如:
highlight CError ctermbg=red guibg=red ctermfg=blue guifg=blue
function! DefineAugroup_For_C()
augroup MyCAugroup
au!
au FileType c match CError /\s\+$\|\%>80v.\+\|[ ][ ]\+\|\n\n\n\+\|,[^ ]\|^[ ]\+[^\*]\|(\s\+\|\s\+)/
augroup END
endf
" Enable the automatic highlight for future edited files, and also for the current one:
command! SetHighlightForC call DefineAugroup_For_C()|exe "set ft=".&ft
" Disable the automatic highlight for future edited files, and also for the current one:
command! UnsetHighlightForC augroup! MyCAugroup|match none
" Comment this line to unable the automatic highlight on load:
SetHighlightForC
然后你可以生动地停用/激活突出显示如下:
:UnsetHighlightForC
:SetHighlightForC
我认为您的代码存在一些问题:
三个第一行未引用任何现有的突出显示(ErrorLeadSpace
,ErrorTailSpace
和Error80
),因此,除非您使用{{在另一个地方定义它们1}}命令,它没用。 (至少,它对你的问题毫无用处。)
另一个问题是您不需要添加以下行:
highlight
因为C头文件没有au FileType h match error /\s\+$\|\%>80v.\+\|[ ][ ]\+\|\n\n\n\+\|,[^ ]\|^[ ]\+[^\*]\|(\s\+\|\s\+)/
au FileType h highlight error ctermbg=red guibg=red ctermfg=blue guifg=blue
文件类型,而是h
文件类型以及源文件。默认情况下,c
文件类型不存在。要了解文件的文件类型,请执行h
另一件事:如果你想为几种文件类型添加相同的规则,你可以只用一个命令添加它们,方法是用逗号分隔文件类型,如下所示:
:set ft?