vim的2个高亮匹配函数

Posted fqbqrr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vim的2个高亮匹配函数相关的知识,希望对你有一定的参考价值。


matchadd(group, pattern [, priority [, id [, dict]]])

在当前窗口,​​定义​​​待高亮模式,会用​​group​​​高亮组高亮.返回可用​​matchdelete()​​​的​​(ID)​​​.其中​​ID​​​是和窗口绑定的.
匹配区分​​​大小写​​​且带​​魔术​​​的,但可在​​pattern​​​里显式关闭.不用​​magic,smartcase​​​和​​ignorecase​​​选项.​​"Conceal"​​​值可​​隐藏​​​匹配.
可选的​​​priority​​​参数指定​​匹配​​​优先级.高优先级的匹配的高亮比低​​优先级匹配​​​优先.​​优先级​​​用整数指定(负数也可以).如果未指定​​priority​​​参数,缺省优先级为​​10​​​.​​hlsearch​​​优先级为​​零​​​,这样所有​​正优先级​​​的匹配都可以​​覆盖​​​它.​​语法​​​高亮采用不同机制,不论优先级如何,​​匹配​​​总会否决​​语法​​高亮.

可选的​​id​​​参数允许​​请求​​​特定的匹配​​ID​​​.如果指定的​​ID​​​已用,报错,且不加入该匹配.​​ID​​​用正整数指定(不含零).​​ID1,2和3​​​分别为|​​:match​​​|,|​​:2match​​​|和|​​:3match​​​|命令保留.如果未指定​​id​​​或为​​-1​​​,​​matchadd()​​​自动选择​​可用​​​的​​ID​​.

可选的​​dict​​​参数允许​​更多定制​​​.目前,可指定​​特定​​​匹配的可使用​​hl-Conceal​​​高亮匹配来显示的​​隐藏​​​字符.​​字典​​有以下成员:

​conceal​​​:要显示的​​特殊字符​​​,而非​​匹配​​​(仅用于​​hl-Conceal​​​高亮的匹配).
​​​window​​​:不使用​​当前​​​窗口,而使用​​指定窗口号​​​或窗口​​ID​​​的其它窗口.匹配数目不限,而​​:match​​​则有此局限.错误,则返回​​-1​​​.
示例:

:highlight MyGroup ctermbg=green guibg=green
:let m = matchadd("MyGroup", "TODO")

要删除该模式

:call matchdelete(m)

用|​​getmatches()​​​|可得到|​​matchadd()​​​|和|​​:match​​​|定义的匹配列表.|​​clearmatches()​​​|可一次删除​​所有​​匹配.

matchaddpos()

matchaddpos(group,pos[,priority[,id[,dict]]])

与|​​matchadd()​​​|相同,但需要​​pos​​​位置列表而非​​匹配模式​​​.比|​​matchadd()​​​|更快.主要用于需要​​快速增加​​​或​​删除​​​匹配的场合,如​​匹配括号​​​高亮.
​​​pos​​​列表可为:
1,​​​数值​​​.高亮整行.首行行号为​​1​​​.
2,​​​单个数值​​​列表.如​​[23]​​​.高亮有​​该数​​​行.
3,包含​​​两个数值​​​列表,如​​[23,11]​​​.前面​​数​​​是行号,​​后面​​​是列号(首列为​​1​​​,值对应|​​col()​​​|返回的字节索引).则高亮此位置字符.
4,包含​​​三个数值​​​列表,如​​[23,11,3]​​​.同上,但​​第三个​​​数给出​​高亮​​​的​​字节​​​长度.数组最大为​​8​​​个.返回​​-1​​​表错误.
示例:

:highlight MyGroup ctermbg=green guibg=green
:let m = matchaddpos("MyGroup", [[23, 24], 34])
:call matchdelete(m)
//删匹配

|​​getmatches()​​​|返回|​​matchaddpos()​​​|添加的​​匹配​​.


以上是关于vim的2个高亮匹配函数的主要内容,如果未能解决你的问题,请参考以下文章

Vim 匹配相同的单词并高亮

[转帖]vim搜索及高亮取消

vi/vim下如何搜索字符串

怎样在Ubuntu里设置vim加亮显示c语言函数名?

一个vim配置

设置grep高亮显示匹配项和基本用法