微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

修改vim突出显示优先级

我的. vimrc中有以下四种突出显示类型(每种都显示不同的颜色):

> incsearch(高亮搜索匹配)
>匹配(当前单词,视觉工作室编辑)
> 2匹配(行尾的尾随空格)
> hlsearch(常规/搜索匹配)

突出显示的优先级似乎与我上面列出的完全相同.例如.增量搜索着色将覆盖任何其他匹配颜色(如果存在于同一字符中).

我想优先使hlsearch成为第二,这样它就会覆盖匹配和2匹配颜色(如果存在于同一个字符中).

有没有办法实现这一目标?

作为参考,这些是我的.vimrc文件中的相关行:

[...]
set hlsearch
set incsearch
[...]
function Matches()
    highlight curword ctermbg=darkgrey cterm=bold gui=bold guibg=darkgrey
    silent! exe printf('match curword /\V\<%s\>/',escape(expand('<cword>'),'/\'))
    highlight eolspace ctermbg=red guibg=red
    2match eolspace /\s\+$/
endfunction
au CursorMoved * exe 'call Matches()'
[...]

解决方法

您使用的一切的优先级是固定的;指定优先级的唯一方法是通过matchadd(),您可以将其用作:match和:2match的替代.由于hlsearch的优先级为零,因此您需要传递否定优先级,例如-1).

例如,替换

:match Match /\<\w\{5}\>/

if exists(w:lastmatch)
    call matchdelete(w:lastmatch)
endif
let w:lastmatch = call matchadd('Match','\<\w\{5}\>',-1)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐