我重新Map了[[和]],以查找文件中的上一个和下一个模式。
[[
]]
nmap [[ ?^.section <CR> nmap ]] /?section /<CR>
问题是,当我使用它们中的任何一个时,我“松散”了当前的搜索模式,所以当为下一个匹配做n时,我搜索下一个“部分”。是否有办法恢复搜索模式,或者使[[和]]Map不影响当前的搜索模式?
n
vxqlmq5t1#
你可以通过手工保存和恢复"/寄存器来完成这件事。从函数返回时会自动恢复该函数。引用VIM文档:
"/
函数将不会更改上次使用的搜索模式和重做命令“.”。这也意味着|:nohl搜索|会在函式传回时复原。在您的.vimrc中,这看起来像这样:
.vimrc
function! Ayman_NextSection /?section / endfunction nmap ]] call Ayman_NextSection()<CR>
希望能有所帮助。
vdgimpew2#
在键入“/”或“?"开始搜索后,只需使用上下箭头逐行进入搜索缓冲区。
kqqjbcuj3#
我认为您应该使用函数search(),因为它不会扰乱您的搜索寄存器:
search()
:call search('pattern') :call search('pattern', 'b')
标志b表示向后搜索而不是向前搜索
b
3条答案
按热度按时间vxqlmq5t1#
你可以通过手工保存和恢复
"/
寄存器来完成这件事。从函数返回时会自动恢复该函数。引用VIM文档:函数将不会更改上次使用的搜索模式和重做命令“.”。这也意味着|:nohl搜索|会在函式传回时复原。
在您的
.vimrc
中,这看起来像这样:希望能有所帮助。
vdgimpew2#
在键入“/”或“?"开始搜索后,只需使用上下箭头逐行进入搜索缓冲区。
kqqjbcuj3#
我认为您应该使用函数
search()
,因为它不会扰乱您的搜索寄存器:标志
b
表示向后搜索而不是向前搜索