Vim语法着色:如何仅突出显示长行?

时间:2008-12-27 16:02:31

标签: vim configuration syntax-highlighting

我希望vim为我设置“长”线。以80列为例,我想突出显示超过该长度的行。这是我认为.vimrc文件应该包含的内容,尽管它(1)不起作用,(2)使用Perl的正则表达式语法来说明我的观点,因为我不太了解Vim:

...
highlight Excess ctermbg=0
au Syntax * syn match Excess /.{80,}$/
...

这(至少在我看来)应该标记超过80列的行。我理想的是能够只为超过80列的行部分着色,因此如果一行是85列,那么第81列到第85列将被突出显示。

我确信Vim可以做到这一点,而不是掌舵我。

5 个答案:

答案 0 :(得分:28)

我需要autocomand为我工作:

augroup vimrc_autocmds
  autocmd BufEnter * highlight OverLength ctermbg=darkgrey guibg=#111111
  autocmd BufEnter * match OverLength /\%75v.*/
augroup END

如果你的目标是平均80列,那么也喜欢使用75的想法。

取自:

http://blog.ezyang.com/2010/03/vim-textwidth/

没有BufEnter失败的可能原因:highlight + match只能使用一次。多次使用意味着重写旧的。 How to add multiple highlights

答案 1 :(得分:16)

我在我的vimrc中有这个。
我在这里找到了它:Vim 80 column layout concerns

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

您可能希望根据喜好调整颜色。

答案 2 :(得分:3)

由于我不喜欢Vim 7.3列标记,我只使用第80列之后的高亮文本...至少这是我想要的95%的时间。

对于其他5%的时间,我写了这个小扩展,也有一个快速的方法来禁用突出显示:

https://gist.github.com/fgarcia/9704429#file-long_lines-vim

答案 3 :(得分:1)

我使用以下方法:

hi gitError ctermbg=Red
match gitError /^.*\s$/
2match gitError /^.\{120\}.*$/

(这些匹配一些git pre-commit hooks)

第二行应该对你有利。

答案 4 :(得分:1)

这使用自动命令调整OverLength值以匹配您的文件类型。

" highlight lines longer than `textwidth` size for each filetype
autocmd FileType *
    \ if &textwidth |
    \    exec 'match OverLength /\%' . string(&textwidth+2) . 'v.*/' |
    \ endif