我在.vimrc中有以下内容,以突出显示超过80个字符的行:
highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.*/
这很有效。但问题是,如果它只适用于某些文件类型,我会更喜欢它。基本上,任何编程语言都应该突出显示,而html,xml和txt文件之类的东西不应该突出显示。我很确定我可以使用autocmd轻松完成这项工作,但我不确定这是否是实现该目标的最佳方式。有人有什么意见吗?
答案 0 :(得分: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()
基本上,只要当前窗口中的缓冲区发生变化,就会触发。此时,您评估缓冲区具有哪种文件类型,并调整匹配是否应该是活动的。
如果您还想支持编辑未命名的缓冲区然后设置其文件类型(通过保存或手动设置& ft),则FileType甚至应该添加到列表中。
答案 1 :(得分:6)
听起来你可能想要这样的东西:
autocmd FileType html,xml highlight OverLength ctermbg=red ctermfg=white guibg=#592929
autocmd FileType html,xml match OverLength /\%81v.*/
无论如何似乎对我有用: - )