VIM还原最后搜索模式

Aym*_*man 8 vim

我重新映射[[]]在文件中找到上一个和下一个模式.映射如下:

nmap [[ ?^.section <CR>
nmap ]] /?section /<CR>
Run Code Online (Sandbox Code Playgroud)

问题在于,当我使用其中任何一个时,我"松散"当前的搜索模式,因此在进行n下一个匹配时,我会搜索下一个"部分".

有没有办法恢复搜索模式的方式,或为[[]]映射不会影响当前的搜索模式?

der*_*ert 15

您可以通过保存和恢复"/寄存器手动完成.但是,更好的方法是将代码移动到函数中; 从函数返回会自动恢复它.引用VIM文档:

                                                                                                                              *function-search-undo*
最后使用的搜索模式和重做命令"." 不会被功能改变.这也意味着|:nohlsearch |的效果 函数返回时撤消.

这在你的看起来像这样.vimrc:

function! Ayman_NextSection
    /?section /
endfunction
nmap ]] call Ayman_NextSection()<CR>
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.