Поиск выбора в vim

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

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

Есть ли способ поиска по выбору? Например, выделите v, затем скопируйте y, есть ли способ вставить после /? Есть ли более простой способ?

12.12.2008 15:43:10
acm 13.09.2016 17:41:28
5 ОТВЕТОВ
РЕШЕНИЕ

Проверьте этот совет Vim: Поиск визуально выделенного текста

Или вы можете просто восстановить выделенный текст с помощью y и перейти в режим поиска / , а затем вставить последний восстановленный текст с помощью Ctrl + R 0

149
12.12.2008 15:45:42
@CMS. Спасибо. Отличный совет! Использование: reg, чтобы увидеть, что находится в ваших регистрах, а затем использование cntl-R N, чтобы получить то, что находится в регистре N, отлично!
Rob Wells 15.12.2008 20:22:10

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

38
16.12.2008 01:11:20

Ответ

  1. Дайте текст, который вы хотите найти
  2. q/p
  3. Enter

объяснение

q/работает так же , как ваниль поиск , /кроме вы в командном режиме , так на pсамом деле «вставить» вместо того , чтобы вводить характер p. Таким образом, выше будет скопировать текст, который вы ищете, и вставить его в поиск.

Для более подробной информации введите :help q/

80
28.03.2019 22:30:56
Мне нравится этот, потому что я нахожу, печатать <ctrl-r> так неудобно.
Jan 5.03.2013 20:40:47
Отлично! Используя emacs in evil-mode, это на самом деле работает, тогда как принятый ответ с треском ломается (вероятно, из-за использования Ctrlключа).
eestrada 25.01.2016 23:25:58
Отлично подходит для простых строк, но не экранирует специальные символы регулярных выражений, как отмечено в комментарии этого другого ответа .
Bluu 20.05.2016 22:44:07
И вам даже не нужно дергать его. Выделите его на визуальном изображении, q/gvpгде gvобозначает последний визуальный выбор ...
user2231796 25.04.2018 18:20:06
@nwildner, q/gvpне работает для меня. Не могли бы вы уточнить ваше предложение?
bam 25.02.2019 15:57:12

Вы можете визуально выделить текст и нажать * и # для поиска следующего вхождения ... Это будет работать так же, единственное предостережение:

Пробел в выборе соответствует любому пробелу при поиске (при поиске «hello world» также будет найдено «hello» в конце строки, а «world» в начале следующей строки).

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

2
13.01.2013 10:32:45
для меня выбор текста визуально, затем нажатие * просто расширяет мой визуальный выбор.
martin jakubik 29.08.2014 08:00:59
Вы не можете по умолчанию, если вы не поместите в vimrc отображение со страницы ..
Ayrat 26.10.2016 06:39:21

Я только что узнал (благодаря превосходной книге Practical Vim ), что для этого есть плагин. Вы можете найти плагин на GitHub .

Плагин позволяет искать визуальный выбор с помощью *и #.

10
7.02.2013 09:25:22
Обратите внимание, что другие ответы не делают никакого выхода. Используя эти методы, любые выбранные метасимволы не будут искать буквально, в зависимости от текущей magicнастройки. Это может даже привести к сбою в поиске метасимволов, которые требуют балансировки. Упомянутый здесь плагин будет экранироваться перед поиском выделенного текста.
Kurt Hutchinson 26.01.2015 21:17:09
это работает, но, к сожалению, вы не можете использовать, nчтобы перейти к следующему найденному предмету, в то время как подходы Кори и CMS допускают ..
Ayrat 26.10.2016 06:54:07