Пошук вибору в vim


107

Я використовую плагіни vim та vim для візуальної студії при написанні C ++. Часто мені здається, що я хочу шукати рядок у межах функції, наприклад, під час кожного дзвінка object->public_member.memberfunc().

Я знаю, що vim пропонує зручний спосіб пошуку одного слова, натиснувши *і #, і він також може шукати набрані рядки за допомогою всюдисущої /команди слэш . При спробі пошуку всіх екземплярів довшого рядка, як описано вище, після повторного введення потрібен певний час /.

Чи є спосіб пошуку вибору? Наприклад, виділіть v, а потім скопіюйте y, чи є спосіб вставити після /? Чи є простіший ярлик?


Можливий дублікат Як шукати вибраний текст?
acm

Відповіді:


154

Перевірте цю підказку Vim: Пошук візуально вибраного тексту

Або ви можете просто витягнути вибраний текст за допомогою y і перейти в режим пошуку / , тоді ви можете вставити останній викреслений текст за допомогою Ctrl + R 0


4
@CMS Дякую. Чудова порада! Використання: reg, щоб побачити, що є у ваших регістрах, а потім використовувати cntl-R N, щоб отримати те, що в реєстрі N - це чудово!
Роб Веллс

85

Відповідь

  1. Дайте текст, який потрібно шукати
  2. q/p
  3. Enter

Пояснення

q/працює аналогічно пошуку ванілі, /за винятком того, що ви знаходитесь в командному режимі, тому pнасправді "вставляєте" замість того, щоб набирати символу p. Отже, вищезгадане скопіює шуканий текст і вставить його в пошук.

Для отримання детальної інформації введіть :help q/


4
Мені це подобається, тому що я вважаю, що вводити <ctrl-r> так незручно.
січня

Відмінно! Якщо використовувати emacs evil-mode, це фактично спрацьовує, тоді як прийнята відповідь нещасно порушується (можливо, через використання Ctrlключа).
eestrada

2
Відмінно підходить для простих рядків, але не уникає спеціальних символів регулярних виразів, як зазначено в коментарі до іншої відповіді .
Блу

1
І вам навіть не потрібно дбати про це. Виберіть його на візуальному, q/gvpде gvстоїть останній візуальний вибір ...

1
@nwildner, q/gvpне працює для мене. Чи можете ви пояснити свою пропозицію?
бам

38

Використовуйте q / замість просто / . ( Те ж саме з д : ). Тепер ви можете редагувати VIM через вашу команду та історію пошуку! (Спробуйте Ctrl-N та Ctrl-P інколи).


10

Щойно я дізнався (завдяки чудовій книзі « Практичний вим» ), що для цього є плагін. Ви можете знайти плагін на GitHub .

Плагін дозволяє шукати візуальний вибір за допомогою *та #.


5
Зауважте, що інші відповіді не уникають жодної можливості. Використовуючи ці методи, будь-які вибрані метахарактори не будуть шукатися буквально, залежно від поточного magicналаштування. Це навіть може призвести до невдачі пошуку метахаракторів, які потребують врівноваження. Плагін, згаданий тут, буде уникати перед пошуком обраного тексту.
Курт Хатчінсон

1
це працює, але, на жаль, ви не можете скористатися n
переходом

2

Ви можете фактично вибрати текст візуально і натиснути * і #, щоб шукати наступне виникнення ... Це буде працювати так само, єдиний застереження полягає в тому, що:

Пробіл у виділенні відповідає будь-якому пробілу при пошуку (пошук "привіт світ" також знайде "привіт" в кінці рядка, а "світ" на початку наступного рядка).

http://vim.wikia.com/wiki/Search_for_visual_selected_text


2
для мене вибір тексту візуально, а потім натискання * просто розширює візуальний вибір.
martin jakubik

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