Як перейти до першого результату пошуку у файлі?


5

Чи існує команда vim для переходу до першого результату пошуку у файлі (тобто з номером з найнижчим номером рядка)? Скажіть, якщо я зроблю це /foo, можна знайти перший екземпляр foo у файлі (не починаючи з того місця, де я перебуваю у файлі, але починаючи з початку файлу)?

Відповіді:


11

ggn приведе вас до першого примірника пошуку у файлі - gg приносить вам початок файлу та n переходить до наступного матчу вашого шаблону.

Також можна використовувати gg2n щоб перейти до другого екземпляра файлу, або gg42n перейти до сорок другої інстанції. Ви можете аналогічно використовувати G$N перейти до фінального матчу ( G приведе вас до останнього рядка, $ приведе вас до кінця цієї лінії, і N пошук назад), або G$2N перейти до передостаннього.


я знайшов G$N трохи незручно набирати. Замість цього просто зробіть ggN та очевидно якщо ви вже ggn щоб бути на першому результаті і хочете досягти останнього результату N.
mcanfield

Зверніть увагу, якщо ви шукаєте назад це дасть вам останній результат у файлі ... що має сенс, але просто мене збентежив, забув я натиснув # !!
JonnyRaa

7

Невизначені команди Ex для перемоги:

:ij[ump] foo  "jumps to first foo that is not in a comment
:ij[ump]! foo "jumps to first foo, comment or not

Дивіться також :il[ist].


2
+1 є незрозумілий! Також можна використовувати :ij 2 foo перейти до другого і т.д.
evilsoup

Спасибі, не знаю, що команда! Будь-яка ідея, як дістатися до останній виникнення?
Philipp Moers

@PhilippMoers, зробіть :ilist і виберіть останню подію.
romainl

Дякую, але це не зовсім те, що я хочу. Я хочу, щоб неінтерактивний зв'язок клавіш, який негайно переходить до останнього виникнення останнього терміну пошуку (наприклад G$N робить, але без забруднення jumplist). Для першого випадку, я nmap gö :ijump! 1 /<C-R>/<CR>, але я не можу зрозуміти те ж саме для останнього події.
Philipp Moers

:ijump використовує номер, який завжди буде відрізнятися, тому я боюся, що немає "легкого" способу отримати те, що ви хочете. Ви повинні спробувати з функцією, яка захоплює вихід :ilist і аналізує його, щоб отримати номер останнього входження.
romainl

4

Використовувати gg команда для переходу до початку файлу.

gg

/foo

2

Команда gD виконуватиме пошук у верхній частині файлу слова під курсором.

Пов'язана команда gd виконуватиме пошук у верхній частині поточної c-подібної функції.


1

Методи, що спираються на використання gg і потім шукати через /foo або n добре для інтерактивного використання, але при пакетному редагуванні за допомогою Vim's -S аргумент не буде працювати, якщо шукане слово є першим словом у файлі; у цьому випадку курсор буде розташований на другому етапі.

Безпечний метод - це ex команда :0/foo. Видача тільки адреси в ex команді приведе вас до цієї адреси :12 перенесе вас на дванадцяту лінію. ed / ex / Vim підтримує шаблони пошуку як адреси, так :/foo приведе вас до першого збігу з позиції курсора (неявно "." на початку). :0/foo означає "перший" foo "з нульової рядка".


1
Ласкаво просимо до Суперкористувача. Вашу відповідь можна зробити більш повною, включивши приклад і додаткове пояснення щодо запропонованої команди. Дякуємо за участь.
Twisty Impersonator

0

Ще один цікавий ярлик, якщо курсор знаходиться на одному з відповідностей у файлі:

[<C-i>

(Щоб було зрозуміло, що це ліва дужка ([), за якою йде контроль-i)

Це подібно до команди "*", але перейти до першого матчу у файлі, а не до наступного матчу після курсору

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