2013-09-28 101 views
1

更改/寄存器EXE“规范/正则表达式”之后,我有以下的自定义命令和函数:如何在功能

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

command! Test2 normal /http<CR> 

调用:Test2改变注册/但调用:call TestFunc()不会改变注册/

这是为什么?我应该使用自定义命令来更改/?的注册表吗?

+0

正在搜索更改/ register,但您可以直接操作它。你想搜索或更改/注册? – romainl

+0

我需要更改寄存器'/'。但是'TestFunc'函数内部的搜索没有改变它,如下所示:http://i.imgur.com/e6bT1qf.png –

+0

不相关,但仍然:[你应该使用':noremap'](http:// learnvimscriptthehardway.stevelosh.com/chapters/05.html);它使映射免于重映射和递归。 –

回答

2

之后将恢复搜索模式;你不能在一个函数中操作它。 (这对大多数目的都很有意义,遗憾的是不适合你。)请参阅:help function-search-undo。您可以直接在调用您的函数的映射/命令中操作搜索模式(也可以通过:let @/ = 'pattern')。