In vim, як я повернусь туди, де був до обшуку?


258

Програмуючи в vim, я часто йду шукати щось, витягувати його, а потім повертатися туди, де я був, вставляти його, змінювати.

Проблема полягає в тому, що після пошуку та пошуку мені потрібно РУЧНО знайти свій шлях назад, де я був.

Чи є автоматичний спосіб повернутися туди, де я був, коли я ініціював останній пошук?


Відповіді:


393

Ctrl+ Oперевезе мене до попереднього місця. Не знайте про місцезнаходження до пошуку.

Редагувати: також `.перенесе вас до останньої внесеної вами зміни.


Також виявляється, що натискання CTRL + O достатньо разів також почне повертати вас назад через раніше відкриті файли.
Марк Бейк

1
Ctrl + O також є моїм кращим методом. Я постійно користуюся ним і хочу, щоб інші редактори повторювали його поведінку.
amrox

45
Так, CTRL-O і CTRL - я, здається, переносить вас туди-сюди, де ви були, приємно.
Едвард Тангуай

8
Ctrl + T поверне вас, лише якщо ви потрапили туди за допомогою тегу. Якщо ви здійснили пошук без використання тегів, Ctrl + T поверне вас до місця, де ви були, перш ніж шукати останній тег
Натан Феллман

1
Я виявив, що якщо я стрибаю з vía, :70а потім :100, натискання ctrl+oодного разу повертається в початкове місце, а не в рядок 70. :(
WhyNotHugo

91

Використовуйте ``для того, щоб повернутися до точного положення, на якому ви знаходилися, до того, як ви шукали / стрибали, або ''щоб повернутися до початку лінії, на якій ви знаходилися, до того, як шукали / стрибали.


4
Працює лише в тому випадку, якщо ви знаходитесь на першому матчі, - якщо ви nпереходите до наступних матчів, ви не переходите туди, де ви почали.
Кріс

Що робити, якщо ви шукали та вносили зміни?
Коста

1
Ви також можете використовувати, g;і g,він переходить у положення попередньої / наступної зміни.
goetzc

39

Я завжди робив це, встановлюючи позначку.

  1. У командному режимі натисніть m[букву] . Так , наприклад, maвстановлює мітку в поточному рядку , використовуючи в якості ідентифікатора мітки.

  2. Щоб повернутися до позначки, натисніть '[букву] . Наприклад, 'aповерне вас до позначки рядка, встановленої на кроці 1. Щоб повернутися до положення стовпця рядка, де ви позначили рядок, скористайтесь `a( натисніть назад [літеру] ).

Щоб побачити всі встановлені на даний момент позначки, введіть :marks.


Злегка спорідненою запискою я щойно відкрив ще одну витончену річ щодо марок.

Скажімо, ви переходите до позначки b , роблячи mb. Vim автоматично встановлює позначку '(це одноцитата), якою б лінією ви не були, перш ніж перейти до позначки b .

Це означає, що ви можете зробити, 'bщоб перейти до цієї позначки, а потім зробіть ''(2 одно цитати), щоб повернутися туди, де ви були раніше.

Я виявив це випадково за допомогою :marksкоманди, яка показує список усіх знаків.


6
на щастя, марка часто непотрібна, оскільки vim спеціально відстежує деякі позиції та надає вам доступ до них за допомогою ``, ^ O тощо.
aehlke

позначка лише здається перенесе мене на початок рядка, на якому він був встановлений. ):
Fzs2

1
@HermannIngjaldsson Ви, можливо, це вже з'ясували, але, використовуючи "переведе вас до розміченої лінії", ви переведете вас у точне місце.
azmr

38

Ви дійсно повинні прочитати :help jumplistце пояснює все це дуже добре.


Мені найкраще подобається ця відповідь, є багато інформації у: допоможіть, про яку більшість людей не знає (а я ще недавно)
Крістіан Стюарт

1
Яке чудове читання! Це дуже корисно. <Co> та <C> для проїзду через місця, якими ви нещодавно були. Працює через буфери за замовчуванням:)
Коста


7

Найпростіший спосіб - встановити позначку, а m[letter]потім повернутися до неї'[letter]


Це бачення побачити вас, коли я шукаю підказки vim. Я більше використовую ctrl-o разом із ctrl-i, оскільки він крокує вперед і вперед легше і автоматично.
MattK

7

Я використовую цей:

nnoremap / ms/
nnoremap ? ms?

Тоді, якщо я щось шукаю, використовуючи /або ?, я можу швидко повернутися назад `s. Ви можете замінити лист sна будь-який лист, який вам подобається.


Тут лише застереження - це перерви пошуку у вікні, такому як NerdTree, де mвизначено, що це щось інше, ніж позначка, у випадку з NerdTree це меню.
Кріс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.