2013-09-28 52 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')。