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()|添加的匹配.

posted @   zjh6  阅读(79)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示