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

Programowanie w Vimie często czegoś Szukam, wyciągam, potem wracam tam gdzie byłem, wstawiam, 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, aby wrócić do miejsca, w którym byłem, gdy rozpocząłem ostatnie wyszukiwanie?

 242
Author: Edward Tanguay, 2008-09-10

7 answers

Ctrl+o zabiera mnie do poprzedniej lokalizacji. Nie znam lokalizacji przed przeszukaniem.

Edit: Również, `.Zaprowadzi cię do ostatniej zmiany, którą dokonałeś.

 362
Author: Agnel Kurian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-02 09:07:43

Użyj ``, aby wrócić do dokładnej pozycji, w której byłeś przed wyszukiwaniem/skokiem, lub '', aby przejść z powrotem do początku linii, na której byłeś przed wyszukiwaniem/skokiem.

 85
Author: Max Cantor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-06 04:40:23

Zawsze robiłam to ustawiając znak.

  1. W trybie komend naciśnij m [letter] . Na przykład m a ustawia znak w bieżącej linii używając a jako indentyfikatora znaku.

  2. Aby wrócić do znaku naciśnij ' [litera] . Na przykład, ' a przenosi cię z powrotem do znaku ustawionego w kroku 1.

Aby zobaczyć wszystkie aktualnie ustawione znaki, wpisz : marks .


W nieco niepowiązanej notce, I właśnie odkryłem kolejną fajną rzecz o Marksie.

Załóżmy, że przeskoczysz do znaku b wykonując 'b . Vim automatycznie ustawia znak ' (to jest pojedynczy cytat) być niezależnie od linii, na której byłeś przed skokiem do znaku b.

Oznacza to, że możesz zrobić 'b aby przejść do tego znaku, a następnie zrobić " (2 single-cytaty), aby wrócić do tego, kim byłeś wcześniej.

Odkryłem to przypadkowo za pomocą polecenia : marks, które pokazuje listę wszystkich marks.

 35
Author: Mark Biek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 13:09:29

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

 34
Author: André,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-17 12:58:30

CTRL + O i CTRL + I , do skakania do tyłu i do przodu.

 26
Author: sale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-03 13:00:19

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

 7
Author: Paul Tomblin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-10 12:47:43

Używam tego:

nnoremap / ms/
nnoremap ? ms?

Następnie, jeśli poszukam czegoś za pomocą / lub ?, mogę szybko wrócić przez `s. Możesz zastąpić literę s dowolną literą.

 7
Author: Ethan Zhang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-01 00:45:16