如何在vim中的“operator pending”映射中删除搜索中的突出显示?

如何在vim中的“operator pending”映射中删除搜索中的突出显示?,vim,Vim,我试图定义一个操作符挂起映射(使用onoremap)来匹配 上一个{和下一个}之间的所有文本。这是在css中使用的 文件,因此我可以使用ir轻松删除、更改或复制规则 我使用了“艰苦学习vimscript”中使用的语法,这是一个组合 执行和正常。我一直无法做到的是清楚突出显示 在我上次搜索之后搜索。使用映射后,文件中的所有} 突出显示 到目前为止,我得到的是: au Filetype css noremap <buffer> ir :<C-U>execute "normal

我试图定义一个操作符挂起映射(使用
onoremap
)来匹配 上一个
{
和下一个
}
之间的所有文本。这是在css中使用的 文件,因此我可以使用
ir
轻松删除、更改或复制规则

我使用了“艰苦学习vimscript”中使用的语法,这是一个组合 执行
正常
。我一直无法做到的是清楚突出显示
在我上次搜索之后搜索。使用映射后,文件中的所有
}
突出显示

到目前为止,我得到的是:

au Filetype css noremap <buffer> ir :<C-U>execute "normal! ?{\rjV/}\rk"<CR>
au文件类型css noremap ir:执行“正常!?{\rjV/}\rk”
我知道我需要调用
:nohlsearch
,但我不知道如何在 映射。映射会导致文本被视觉选择,因此
:nohlsearch
被调用,它应用于选择,但不起作用


我需要一种方法来清除
”在这种特殊情况下,使用以下内容可能更容易:

au Filetype css noremap <buffer> ir :<C-U>call search('{', 'Wb')\|call search('}', 'Ws')\|normal! v''<CR>
au文件类型css noremap ir:call search('{','Wb')\\\\\调用搜索('}','Ws')\\正常!v“
请注意,这与您的示例所做的相同,而不是正确的事情。例如,嵌套大括号将无法正确处理

不带“s”标志调用搜索函数不会设置任何标记或更改搜索寄存器,因此无需重置任何内容


请注意,这并不是实现所需功能的最佳方式-您可能希望使用
iB
i{
(它们是相同的)文本对象。

在这种特殊情况下,可能更容易使用以下内容:

au Filetype css noremap <buffer> ir :<C-U>call search('{', 'Wb')\|call search('}', 'Ws')\|normal! v''<CR>
au文件类型css noremap ir:call search('{','Wb')\\\\\\\\\\\\调用搜索('}','Ws')\\\\\正常!v''
请注意,这样做与您的示例相同,但不是正确的做法。例如,嵌套大括号将无法正确处理

不带“s”标志调用搜索函数不会设置任何标记或更改搜索寄存器,因此无需重置任何内容


请注意,这并不是实现您想要的目标的最佳方式-您可能想要
iB
i{
(它们是相同的)文本对象。

viB
对您的用例不起作用吗?是的,viB确实起作用,它实际上是我最后放在vimrc中的东西,但当我遇到突出显示问题时,我用它作为我的问题的示例。
viB
对您的用例不起作用吗?是的,viB确实起作用,它实际上是我最后放在我的vimrc中的东西mrc,但当我遇到突出显示问题时,我将此作为我的问题的示例。我不知道搜索命令。我将阅读:帮助并尝试您的解决方案。如果它有效,我将回到这里接受它(即使我认为我最终将使用iB)。我不知道搜索命令。我将阅读:帮助并尝试您的解决方案。如果它有效,我将回到这里接受它(即使我认为我最终将使用iB)。