![](/img/trans.png)
[英]vim - python autoindent not working correctly when set in .vimrc
[英]VIM: match none command not working when put in .vimrc
我的.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個字符的行中多余的字符。
但是,暫時,我想禁用此“錯誤”突出顯示。 目前,我是通過在打開的文件中使用“不匹配”命令來實現的。 而當我將此命令放入.vimrc文件時,此方法不起作用。
如何以最小的.vimrc更改實現此目標?
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
),所以,除非你與另一個地方定義他們highlight
命令,也沒用。 (至少,對您的問題沒有用)。
另一個問題是您不需要添加以下行:
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
因為C頭文件沒有h
文件類型,但是c
文件類型以及源文件。 默認情況下, h
文件類型不存在。 要知道文件的文件類型, :set ft?
另一件事:如果要為多個文件類型添加相同的規則,則可以通過用逗號分隔文件類型,從而僅用一個命令添加它們,如下所示:
au FileType c,cpp,php match error /\\s\\+$\\|\\%>80v.\\+\\|[ ][ ]\\+\\|\\n\\n\\n\\+\\|,[^ ]\\|^[ ]\\+[^\\*]\\|(\\s\\+\\|\\s\\+)/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.