8

我的 .vimrc 中有以下内容来突出显示超过 80 个字符的行:

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

这工作得很好。但是,问题是如果它只适用于某些文件类型,我会更喜欢它。基本上,任何编程语言都应该突出显示,而不应该突出显示 html、xml 和 txt 文件之类的内容。我很确定我可以使用 autocmd 轻松完成此操作,但我不确定这是否是实现该目标的最佳方式。有人有意见吗?

4

2 回答 2

7

听起来你可能想要这样的东西:

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

无论如何似乎对我有用:-)

于 2009-11-09T17:53:44.010 回答
6

对这样的任务使用 match 的问题在于它是活动窗口的本地,而不是正在编辑的缓冲区。我会尝试以下几行:

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 添加到列表中。

于 2009-11-09T18:19:47.020 回答