如何从 Vim 的 match() 函数中删除颜色突出显示

Aro*_*Lee 4 vim

我想有第二颜色亮点的Vim,简约的方式做的就是使用:match:2match:3match命令:

:match TODO /pattern/
Run Code Online (Sandbox Code Playgroud)

TODO是亮点组;图案将像 一样突出显示':/'

我很难弄清楚如何去除颜色。

Mar*_*oij 5

据我所知,没有用于此目的的命令,但您可以使用clearmatches()matchdelete()函数。

clearmatches()将删除所有匹配项:

:call clearmatches()
Run Code Online (Sandbox Code Playgroud)

matchdelete()删除特定的匹配实例;您可以从以下位置获取 ID getmatches()

:for m in filter(getmatches(), { i, v -> l:v.group is? 'TODO' })
:  call matchdelete(m.id)
:endfor
Run Code Online (Sandbox Code Playgroud)

您还可以过滤匹配项,例如与pattern键匹配的模式。命令:Unmatch可能如下所示:

command! -nargs=1 Unmatch
    \  for m in filter(getmatches(), { i, v -> l:v.group is? <q-args> })
    \|     call matchdelete(m.id)
    \| endfor
Run Code Online (Sandbox Code Playgroud)


Ing*_*kat 5

您可以:match TODO /pattern/使用:match none或 仅撤消命令:match。其他:2match:3match变体相同。

通用matchdelete()函数通常在脚本中用于撤消通过:matchadd(). 当您以交互方式使用这些命令时(对于一组有限的匹配项),我不建议您切换到它们。