Jak mogę wrócić do miejsca, w którym byłem przed wyszukiwaniem?


258

Programując w vimie Często szukam czegoś, szarpię go, a następnie wracam do miejsca, w którym byłem, wstawiam go, modyfikuję.

Problem polega na tym, że po przeszukaniu i znalezieniu muszę RĘCZNIE znaleźć drogę powrotną do miejsca, w którym byłem.

Czy istnieje automatyczny sposób powrotu do miejsca, w którym byłem, kiedy rozpocząłem moje ostatnie wyszukiwanie?


Odpowiedzi:


393

Ctrl+ Ozabiera mnie do poprzedniej lokalizacji. Nie wiem o lokalizacji przed wyszukiwaniem.

Edycja: `.zabierze Cię również do ostatniej wprowadzonej zmiany.


Wygląda również na to, że naciśnięcie CTRL + O wystarczająco dużo razy spowoduje również przejście z powrotem do wcześniej otwartych plików.
Mark Biek

1
Ctrl + O jest również moją preferowaną metodą. Używam go stale i życzę innym redaktorom powtórzenia jego zachowania.
amrox

45
Tak, CTRL-O i CTRL-Wydaje się, że zabieram cię tam iz powrotem, gdzie byłeś, miło.
Edward Tanguay,

8
Ctrl + T zabierze Cię z powrotem tylko wtedy, gdy dotrzesz tam za pomocą tagu. Jeśli przeszukałeś go bez użycia tagów, Ctrl + T zabierze Cię z powrotem do miejsca, w którym byłeś, zanim szukałeś ostatniego tagu
Nathan Fellman,

1
Przekonałem się, że jeśli przeskoczę vía, :70a następnie :100naciśnięcie ctrl+oraz wróci do pierwotnej lokalizacji, a nie wiersza 70. :(
WhyNotHugo

91

Użyj, ``aby wskoczyć z powrotem do dokładnej pozycji, w której byłeś przed przeszukaniem / ''skakaniem , lub z powrotem na początek linii, na której byłeś przed przeszukaniem / skakaniem.


4
Pracuje tylko, jeśli bierzesz udział w pierwszym meczu, nponieważ kolejne mecze oznaczają, że nie wrócisz do miejsca, w którym zacząłeś.
Kris,

Co jeśli przeszukałeś i dokonałeś zmiany?
Costa

1
Możesz także użyć g;i g,, przechodzi do pozycji poprzedniej / następnej zmiany.
goetzc

39

Zawsze robiłem to, ustanawiając znak.

  1. W trybie poleceń naciśnij m[litera] . Na przykład maustawia znak w bieżącej linii za pomocą a jako identyfikatora znaku.

  2. Aby wrócić do znaku, naciśnij '[litera] . Na przykład 'azabierze Cię z powrotem do znacznika linii ustawionego w kroku 1. Aby wrócić do pozycji kolumny wiersza, w którym zaznaczyłeś linię, użyj `a( zaznacz tyłem [litera] ).

Aby zobaczyć wszystkie ustawione znaki, wpisz :marks.


Z nieco niepowiązanej notatki, właśnie odkryłem kolejną fajną rzecz dotyczącą znaków.

Powiedzmy, że wykonujesz skok do oznaczenia bmb . Vim automatycznie ustawia znak '(to pojedynczy cytat) na dowolną linię, na której byłeś, zanim skoczyłeś do znaku b .

Oznacza to, że możesz zrobić 'bskok do tego znaku, a następnie zrobić ''(2 pojedyncze cudzysłowy), aby wrócić do miejsca, w którym byłeś wcześniej.

Odkryłem to przypadkowo za pomocą :markspolecenia, które pokazuje listę wszystkich znaków.


6
na szczęście ocena jest często niepotrzebna, ponieważ vim śledzi niektóre pozycje i daje do nich dostęp za pomocą ``, ^ O itp.
aehlke 14.0411

znak zdaje się prowadzić mnie tylko na początek linii, na której został ustawiony. ):
Fzs2

1
@HermannIngjaldsson Być może już to rozgryzłeś, ale podczas używania „zabierze Cię do zaznaczonej linii,„ zabierze Cię do dokładnej lokalizacji.
azmr

38

Naprawdę powinieneś przeczytać :help jumplistto wszystko wyjaśnia bardzo dobrze.


Najbardziej podoba mi się ta odpowiedź, jest WIELE informacji: pomoc, o której większość ludzi nie wie (a ja dopiero niedawno)
Christian Stewart

1
Co za świetna lektura! To jest bardzo pomocne. <Co> i <Ci>, aby przełączać się między miejscami, w których ostatnio byłeś. Domyślnie działa między buforami:)
Costa


7

Najprostszym sposobem jest ustawienie znaku za pomocą m[letter], a następnie powrót do niego za pomocą'[letter]


Miło jest cię widzieć, kiedy szukam wskazówek vima. Używałem ctrl-o więcej razem z ctrl-i, ponieważ porusza się tam iz powrotem łatwiej i bardziej automatycznie.
MattK

7

Używam tego:

nnoremap / ms/
nnoremap ? ms?

Następnie, jeśli szukam czegoś za pomocą /lub ?, mogę szybko wrócić `s. Możesz zamienić list sna dowolny, który ci się podoba.


Jedynym zastrzeżeniem jest to, że przerywa wyszukiwanie w oknie takim jak NerdTree, gdzie mjest zdefiniowane jako coś innego niż znak, w przypadku NerdTree jest to menu.
Kris
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.