Vim 如何更改exe的寄存器;norm/regex“;在功能上

Vim 如何更改exe的寄存器;norm/regex“;在功能上,vim,Vim,我有以下自定义命令和功能: function! TestFunc() execute "normal /http\<CR>" endfunction command! Test2 normal /http<CR> 函数!TestFunc() 执行“正常/http\” 端功能 命令!Test2普通/http 调用:Test2会更改寄存器/,但调用:call TestFunc()不会更改寄存器/ 为什么会这样?我是否应该使用自定义命令来更改/?的寄存器?搜索模式

我有以下自定义命令和功能:

function! TestFunc()
    execute "normal /http\<CR>"
endfunction

command! Test2 normal /http<CR>
函数!TestFunc()
执行“正常/http\”
端功能
命令!Test2普通/http
调用
:Test2
会更改寄存器
/
,但调用
:call TestFunc()
不会更改寄存器
/


为什么会这样?我是否应该使用自定义命令来更改/?的寄存器?

搜索模式将在之后恢复;您不能在函数内操作它。(这在大多数情况下都是有意义的,但不幸的是,对您的情况并非如此。)请参见
:帮助函数搜索撤消
。相反,您可以在调用函数的映射/命令中直接操作搜索模式(也可以通过
:let@/=“pattern”
)。

搜索会更改/寄存器,但您可以直接操作它。是否要搜索或更改/寄存器?我需要更改寄存器
/
。但是
TestFunc
函数中的搜索并没有像这里看到的那样改变它:不相关,但仍然:;它使映射不受重映射和递归的影响。