vim高亮显示删除覆盖其他人嗨

时间:2011-12-31 01:21:01

标签: vim highlighting

我的~/.vimrc我使用此同义词作为长行

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 个答案:

答案 0 :(得分: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不会废弃语法突出显示,但始终会覆盖它。

答案 1 :(得分:0)

我意识到你很久以前就问了这个问题,但如果其他人也问过,也许你可以尝试使用$tables[$table] = $result; 功能,而不是这样:

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 。这会覆盖你的语法高亮。

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

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

请参阅:call matchdelete(9999):h matchadd