2009-09-06 10 views
7

Zamapowałem [[ i ]], aby znaleźć poprzedni i następny wzór w pliku. Mapowania są następujące:VIM Przywróć ostatni wzór wyszukiwania

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

Kwestia jest taka, że ​​podczas korzystania z któregokolwiek z nich, „luźne” obecny wyszukiwania wzorca, więc gdy robi n na następny mecz, szukam sekcji „” następnego .

Czy istnieje sposób na przywrócenie wzorca wyszukiwania lub mapowania [[ i ]], aby nie wpłynęły na bieżący wzorzec wyszukiwania?

Odpowiedz

14

Prawdopodobnie można to zrobić ręcznie, zapisując i przywracając rejestr "/. Jednak lepszym sposobem jest po prostu przeniesienie kodu do funkcji; powrót z funkcji automatycznie ją przywraca.Zacytować dokumentację vim:

                                                                                                                                 0.123.                                                                                                                * funkcja-search-cofania *
ostatnio używany wyszukiwania wzorca i komenda przerobić "" nie zostanie zmieniony przez funkcję. To również oznacza, że ​​efekt |: nohlsearch | jest cofany po powrocie funkcji.

To mogłoby wyglądać podobnie jak ten w swojej .vimrc:

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

nadzieję, że pomoże.

+0

W zależności od tego, co próbujesz zrobić, 'histdel()' może być również pomocny. Spowoduje to automatyczne wyczyszczenie bieżącego wyszukiwania, ale nie usunie wyszukiwania z historii wyszukiwania (dostęp za pomocą 'q /') –

Powiązane problemy