VIM恢复上次搜索模式

bttbmeg0  于 2022-11-11  发布在  其他
关注(0)|答案(3)|浏览(176)

我重新Map了[[]],以查找文件中的上一个和下一个模式。

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

问题是,当我使用它们中的任何一个时,我“松散”了当前的搜索模式,所以当为下一个匹配做n时,我搜索下一个“部分”。
是否有办法恢复搜索模式,或者使[[]]Map不影响当前的搜索模式?

vxqlmq5t

vxqlmq5t1#

你可以通过手工保存和恢复"/寄存器来完成这件事。从函数返回时会自动恢复该函数。引用VIM文档:

  • 函数-搜索-撤消 *

函数将不会更改上次使用的搜索模式和重做命令“.”。这也意味着|:nohl搜索|会在函式传回时复原。
在您的.vimrc中,这看起来像这样:

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

希望能有所帮助。

vdgimpew

vdgimpew2#

在键入“/”或“?"开始搜索后,只需使用上下箭头逐行进入搜索缓冲区。

kqqjbcuj

kqqjbcuj3#

我认为您应该使用函数search(),因为它不会扰乱您的搜索寄存器:

:call search('pattern')
:call search('pattern', 'b')

标志b表示向后搜索而不是向前搜索

相关问题