Search Vim搜索和突出显示脚本中的控件

Search Vim搜索和突出显示脚本中的控件,search,vim,highlighting,Search,Vim,Highlighting,我正在编写一个脚本,希望通过编程控制搜索,并突出显示它们。search()函数的结果不会突出显示(我想),因此使用该函数对我没有用处 我想做的是使用“normal/”命令来搜索变量,但这似乎并不简单。我可以为命令编写脚本: execute 'normal /' . my_variable . '\<CR>' 然后显而易见的事情似乎是做一个: normal n 但是,如果我在脚本中运行它,“正常n”不会起任何作用。设置搜索寄存器确实有效,如果我在scrip终止搜索后

我正在编写一个脚本,希望通过编程控制搜索,并突出显示它们。search()函数的结果不会突出显示(我想),因此使用该函数对我没有用处

我想做的是使用“normal/”命令来搜索变量,但这似乎并不简单。我可以为命令编写脚本:

    execute 'normal /' . my_variable . '\<CR>'
然后显而易见的事情似乎是做一个:

    normal n
但是,如果我在脚本中运行它,“正常n”不会起任何作用。设置搜索寄存器确实有效,如果我在scrip终止搜索后手动按“n”(由于hlsearch处于启用状态,因此会显示突出显示),则会发生搜索。我甚至不在乎光标是否被定位,我只想突出显示寄存器模式。但是脚本中“set-hlsearch”的各种组合也不起作用


我知道我可以使用“match()”,但我想让它与常规搜索突出显示一起工作,我想知道我做错了什么。这一定很简单,但我没看到。谢谢您的帮助。

如果您的脚本正在使用函数,那么
:help function search undo
中的这句话与此相关:

上次使用的搜索模式和重做命令“” 不会被函数更改。这也 表示:nohlsearch的效果已撤消 当函数返回时


Vim通常会在函数结束时尝试重置搜索模式(以及其他一些事情),通常您可以通过将
n
(下一次搜索)添加到映射的结尾,或者使用
:map
,让函数返回要执行的键序列来解决此问题。

仔细检查,似乎
\
没有在单引号中找到。请尝试使用此选项:

execute 'normal /' . my_variable . "\<CR>"
执行“正常/”。我的_变量。"\"
运行:

让@/=a:searchStr

从函数内部运行

正常的

从你的职能之外(内部什么也不做)

命令-nargs=*Hs调用MySearch()|正常n

或者您可以使用:

设置hlsearch

如果不希望光标移动,则替换为正常n


(如果没有功能之外的东西,我无法想出另一种方法。)

谢谢。我敢肯定这是我第一次尝试,但没有成功。我认为您在另一个答案中找到了问题所在,即您确定了修改函数中的搜索模式的问题。我遇到问题的所有命令都在一个函数中,因此我将检查它以确认。我已尝试我的搜索命令<代码>执行“正常/^---\”工作。但是
execute'normal/^-\'
没有。我已经找了很长时间了。这对谷歌来说是一件非常困难的事情。你的回答非常有效,完全符合我的要求!
execute 'normal /' . my_variable . "\<CR>"