2009-09-06 78 views
7

我重新映射[[]]以查找文件中的上一個和下一個模式。該映射如下:VIM恢復上次搜索模式

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

的問題是,當我使用其中任何一個,我「寬鬆」目前的搜索模式,所以在接下來的比賽做n的時候,我搜了下「參考」 。

有沒有辦法恢復搜索模式,或者[[]]映射不會影響當前搜索模式?

回答

14

你可以通過保存和恢復"/寄存器手動完成。但是,更好的方法是將代碼移入一個函數中;從函數返回自動恢復它。引述VIM文檔:

                                                                                                                                                                                                                                                            *功能搜索-撤消*
最近使用的搜索模式和重做命令 「」該功能不會改變 。這也意味着 | | nohlsearch |在函數返回時撤銷 。

這會看着你的.vimrc是這樣的:

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

希望有所幫助。

+0

取決於你想做什麼'histdel()'也可能有幫助。這會自動清除您當前的搜索,但不會從搜索歷史記錄中刪除搜索(可通過'q /'訪問) – 2016-10-31 14:01:40