2011-12-31 53 views
3

我我~/.vimrc我用这个SYN长期线VIM亮点删除覆盖别人喜

augroup longLines                     
    au! 
    au! filetype zsh,sh,python,vim,c,cpp 
     \ syn match ColorColumn /\%>80v.\+/ containedin=ALL 
augroup END 

但这覆盖其他SYN,与

ss http://f.cl.ly/items/1n28361h1X3U3J203x2D/ss%202011-12-30_at_22.11.46.png

没有

ss http://f.cl.ly/items/1m2H1R1Y3P3i3f0G3U0x/ss%202011-12-30_at_22.19.47.png

为什么syn改写其他亮点?
这是在最后几行

sys.exit(1) 
import settings 

有不同的颜色,用SYN臭名昭著,该行失去了正常的亮点

+2

Uhmm的,对吧....有没有在某处有问题吗? – Rook 2011-12-31 02:14:13

+0

在'vim7.3'中我使用':set cc = 80' – kev 2011-12-31 02:35:59

+0

@kev我不喜欢'cc'非常难看,总是显示第80列,当我的行只有80个字符 – JuanPablo 2011-12-31 02:47:37

回答

2

我使用下面的代码:

highlight TooLongLine term=reverse ctermfg=Yellow ctermbg=Red 
autocmd BufEnter,WinEnter * if &tw && !exists('b:DO_NOT_2MATCH') | 
      \     execute '2match TooLongLine /\S\%>'.(&tw+1).'v/' | 
      \    endif 
autocmd BufLeave,WinLeave * 2match 

command -nargs=0 -bar Dm let b:DO_NOT_2MATCH=1 | 2match 
command -nargs=0 -bar Sm execute '2match TooLongLine /\S\%>'.(&tw+1).'v/' | 
      \   silent! unlet b:DO_NOT_2MATCH 

如果你不这样做希望能够删除此突出显示,依赖于textwidth并坚持突出显示超出限制的空格,那么您可以将其截断为

2match TooLongLine /.\%>80v/ 

该解决方案使用match-highlight,它不会废除语法高亮显示,但始终覆盖它。

0

我知道你前一段时间问这个,但在情况下,如果其他人问过,也许你可以尝试使用matchadd()功能,而不是像这样:

hi def longLine gui=reverse "or guibg=pink, or whatever you prefer 
augroup longLines 
    au! 
    au! filetype zsh,sh,python,vim,c,cpp 
       \ call matchadd("longLine", "\\%>80v", 0, 9999) 
augroup END 

最重要的是,确保你不会设置你决定使用的任何亮点组的guifg。这会覆盖你的语法突出显示。

另一个重要部分(至少对我来说)是使用matchadd0作为第三个参数,这样您的搜索突出显示仍然有效,并且不会被longLine突出显示取代。

第四个参数可以省略。这只是一个常量,以便您可以稍后再次轻松删除突出显示,如果需要的话。

:h matchadd:h matchdelete