VIM还原最后搜索模式

时间:2009-09-06 08:17:41

标签: vim

我重新映射[[]]以查找文件中的上一个和下一个模式。映射如下:

nmap [[ ?^.section <CR>
nmap ]] /?section /<CR>

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

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

2 个答案:

答案 0 :(得分:15)

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

  

*功能搜索-撤消*
  最后使用的搜索模式和重做命令“。”   不会被功能改变。这也是   意味着|:nohlsearch |的影响没有了   当函数返回时。

.vimrc

中看起来像这样
function! Ayman_NextSection
    /?section /
endfunction
nmap ]] call Ayman_NextSection()<CR>

希望有所帮助。

答案 1 :(得分:1)

输入“ /”或“?”后要开始搜索,只需使用上下箭头逐行显示搜索缓冲区即可。