2008-12-27 65 views
17

我想vim为我着色“长”行。以80列为例,我想突出显示超过这个长度的行。 (1)不起作用,(2)使用Perl的正则表达式语法来说明我的观点,因为我不太了解Vim:Vim语法着色:如何仅突出显示长线?

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

这(至少在我脑海中)应该标记超过80列的行。我最理想的是能够仅对超过80列的行进行着色,所以如果一行是85列,那么第81列到第85列将被突出显示。

我相信Vim可以做到这一点,只是不在我掌舵。

+1

+1。伟大的问题!现在,我不知道答案,但我会继续关注。 – PEZ 2008-12-27 16:59:05

+1

也许colorcolumn可能是你的东西。 – 2012-09-15 11:21:45

回答

26

我需要autocomand为我工作:

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

而且喜欢用75,如果你的目标是在平均80列的想法。

来自

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

可能的原因失败的原因,而不BufEnter:亮点+比赛只能使用一次。多次使用意味着旧版本被覆盖。 How to add multiple highlights

1

我使用下面的方法:

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

(这些匹配一些GIT中预先承诺钩)

第二行应interrest的给你。

+0

谢谢。这(/^.\{120\}.*$/)突出显示了整条线 - 只是从字符121开始突出显示的任何想法? – 2008-12-27 16:58:06

+0

对不起,不知道。问题在于它可能不适用于正则表达式。你知道,它可能会需要堆叠机器。 – terminus 2008-12-27 17:07:50

+0

您只能突出显示80个第一个字符。我知道,不完全是你想要的,但无论如何你都会看清楚过多。 – PEZ 2008-12-27 17:28:17

15

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

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

您可能希望将颜色调整自己的喜好。

1

它使用一个自动调整过长值以符合您的文件类型。

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