代码之家  ›  专栏  ›  技术社区  ›  Ayman

vim恢复上次搜索模式

vim
  •  8
  • Ayman  · 技术社区  · 17 年前

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

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

    问题是,当我使用它们中的任何一个时,我会“释放”当前的搜索模式,因此在执行此操作时 n 在下一个匹配项中,我搜索下一个“部分”。

    是否有恢复搜索模式的方法,或 [[ 和 ] ] 映射到不影响当前搜索模式?

    1 回复  |  直到 17 年前
        1
  •  15
  •   ire_and_curses    17 年前

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

    *函数搜索撤消*
    上次使用的搜索模式和“恢复”命令。 不会被函数更改。这也是 意味着:nohlsearch的效果被撤销 当函数返回时。

    在您的 .vimrc 以下内容:

    function! Ayman_NextSection
        /?section /
    endfunction
    nmap ]] call Ayman_NextSection()<CR>
    

    希望有帮助。