2009-09-06 10 views
7

Ich habe [[ und ]] neu zugeordnet, um das vorherige und das nächste Muster in der Datei zu finden. Die Zuordnungen sind wie folgt:VIM Wiederherstellen des letzten Suchmusters

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

Das Problem ist, dass, wenn ich irgendwelche von ihnen verwenden, I „loose“ die aktuellen Suchmuster, so dass, wenn n für das nächste Spiel zu tun, die ich für den nächsten „Abschnitt“ suchen .

Gibt es eine Möglichkeit, das Suchmuster wiederherzustellen, oder für die [[ und ]] Zuordnungen das aktuelle Suchmuster nicht zu beeinflussen?

Antwort

14

Sie können es wahrscheinlich von Hand tun, indem Sie das Register "/ speichern und wiederherstellen. Besser ist es jedoch, den Code in eine Funktion zu verschieben. Wenn Sie von einer Funktion zurückkehren, wird sie automatisch wiederhergestellt.Um es mit der VIM Dokumentation:

                                                                                                                                                                                                                                                            * Funktionssuch-undo *
Die zuletzt verwendete Suchmuster und der Redo-Befehl "" wird von der Funktion nicht geändert. Dies bedeutet auch , dass der Effekt von |: nohlsearch | wird rückgängig gemacht , wenn die Funktion zurückgibt.

Dies würde so etwas in Ihrem .vimrc aussehen:

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

Hoffnung, das hilft.

+0

Je nachdem, was Sie versuchen, kann 'histdel()' auch hilfreich sein. Dies löscht automatisch Ihre aktuelle Suche, aber entfernt die Suche nicht aus dem Suchverlauf (Zugriff mit 'q /') –

Verwandte Themen