2009-11-09 78 views
8

我有我的.vimrc以下突出行超過80個字符長:將vim中的匹配限制爲某些文件類型?

highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
match OverLength /\%81v.*/ 

這工作得很好。但是,問題是,如果它只適用於某些文件類型,我更喜歡它。基本上,應該突出顯示任何編程語言,而不應該使用html,xml和txt文件。我很確定我可以通過autocmd輕鬆完成此操作,但我不確定這是否是實現該目標的最佳方法。任何人有任何意見?

回答

6

聽起來像是你可能想是這樣的:

autocmd FileType html,xml highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
autocmd FileType html,xml match OverLength /\%81v.*/ 

似乎爲我反正:-)

+1

阿格,其實這並不完全是你要求的。嗯,不知道是否有可能取消FileType ... – Benj 2009-11-09 17:59:12

+0

是的,就像我說的,我認爲用autocmds這樣做可以工作得很好,你只需要交換哪些文件在這裏。而不是HTML和XML,它應該是C,C++等... 所以,如果FileType可以否定,那就更好了。 – 2009-11-09 18:01:08

+0

嗯,我不認爲它是。看起來你必須實際列出你想要突出顯示的文件類型。 – Benj 2009-11-09 18:01:49

7

問題工作使用匹配任務像這樣的是,它是本地的活動窗口,而不是正在編輯的緩衝區。我想嘗試的東西大致如下:

highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
fun! UpdateMatch() 
    if &ft !~ '^\%(html\|xml\)$' 
     match OverLength /\%81v.*/ 
    else 
     match NONE 
    endif 
endfun 
autocmd BufEnter,BufWinEnter * call UpdateMatch() 

基本上,要觸發每當在當前窗口的更改的緩衝區。此時,您將評估緩衝區具有的文件類型,並調整匹配是否應該激活。

如果您還想支持編輯未命名的緩衝區,然後設置其文件類型(通過保存或手動設置&英尺),甚至應該將FileType添加到列表中。

相關問題