2013-03-29 17 views
22

W dużym buforze, chciałbym przewinąć w dół do ostatniego wystąpienia wzór wzór.Vim znaleźć ostatnie wystąpienie

Jeśli jestem przy pierwszym wystąpieniu, jest to dość łatwe do wyszukania wzór/ odwrócić przejść do następnego wystąpienian z N i dostać się do ostatniego ..

Jeśli jestem w środku sekwencji zdarzeń ... czy istnieje lepszy sposób na skakanie?

Odpowiedz

49

Łatwym sposobem na znalezienie ostatnie wystąpienie jest skok do końca i szukać wstecz:

G?foo<CR> 

W rzeczywistości nie jest jeszcze łatwiejszy sposób, jeśli już czegoś szukał. Wystarczy przejść na koniec i szukać wstecz dla rzeczą, którą po prostu szukasz:

GN 

proste.

Edit: jeśli wyszukiwanie wystąpił na ostatniej linii, a następnie GN by przejść nad nim do drugiego ostatniego wystąpienia. Korzystanie z ggN rozwiązałoby ten problem. (I gg?foo<CR> podobnych przyczyn).

+0

Oczywiście. Masz rację. Dzięki! – Robottinosino

+0

ha, myślę, że moja odpowiedź jest taka sama jak drugi punkt. Nie widziałem tego, kiedy pisałem moje. usuń moje i do siebie! +1 – Kent

+5

również proponuję mój 'ggN', nawet jeśli ma jeszcze jeden kluczowy skok. Ponieważ 'GN' działa tylko wtedy, gdy ostatni mecz nie znajduje się w ostatniej linii pliku. Jeśli znajdzie się w ostatniej linii, twoje 'N' przeskoczy nad nim. – Kent

2

potencjalnie dłuższą rozwiązanie:

:vim foo % | clast 
+0

'type clast' ->' -bash: type: clast: not found' – Robottinosino

+0

Hmmmmmmm ... Co? – romainl

+0

Zakładam, że 'clast' to program, który powinien być na $ PATH? Jeśli tak, spróbowałem 'type', aby go zlokalizować (jak' co'), ale dało mi ten komunikat o błędzie. Co to jest 'clast'? – Robottinosino

0

Innym rozwiązaniem jest:

G/\(.\{-}\zs\(foo\)\)\{1,}<CR> 
+0

@StackOverflowed, co masz na myśli? – Reman

+0

Przepraszam, tylko próbowałem to zrozumieć :). – StackOverflowed

Powiązane problemy