Я использую плагины vim и vim для Visual Studio при написании C++. Часто мне хочется искать строку внутри функции, например при каждом вызове object->public_member.memberfunc().
Я знаю, что vim предлагает удобный способ поиска одного слова, нажимая * и #, и он также может искать набранные строки с помощью повсеместно распространенной команды / с косой чертой. При попытке найти все экземпляры более длинной строки, подобной приведенной выше, требуется некоторое время для повторного ввода после /.
Есть ли способ поиска по выделению? Например, выделите с помощью v, затем скопируйте с помощью y, есть ли способ вставить после /? Есть более простой ярлык?





Проверьте этот совет Vim: Поиск визуально выделенного текста
Или вы можете просто выдернуть выделенный текст с помощью y и перейти в режим поиска /, затем вы можете вставить последний извлеченный текст с помощью Ctrl + R 0
@CMS. Спасибо. Отличный совет! Использование: reg, чтобы увидеть, что находится в ваших регистрах, а затем использование cntl-R N, чтобы получить то, что находится в регистре N, отлично!
Используйте q/ вместо /. (То же самое с q:). Теперь вы можете редактировать VIM через свою историю команд и поиска! (Попробуйте как-нибудь Ctrl-N и Ctrl-P).
Объяснение
q/ работает аналогично обычному поиску /, за исключением того, что вы находитесь в командном режиме, поэтому p фактически «вставляет» вместо ввода символа p. Таким образом, приведенное выше скопирует текст, который вы ищете, и вставит его в поиск.
Для получения более подробной информации наберите :help q/.
Мне нравится этот, потому что мне неудобно набирать <ctrl-r>.
Отлично! Используя emacs в evil-mode, это действительно работает, тогда как принятый ответ с треском ломается (вероятно, из-за использования ключа Ctrl).
Отлично подходит для простых строк, но не экранирует специальные символы регулярных выражений, как указано в комментарий этого другого ответа.
И даже дергать не нужно. Выберите его на визуальном уровне, q/gvp, где gv означает последний визуальный выбор ...
@nwildner, у меня q/gvp не работает. Не могли бы вы пояснить свое предложение?
Фактически вы можете выделить текст визуально и нажать * и # для поиска следующего вхождения ... Он будет работать так же, единственное предостережение в том, что:
Whitespace in the selection matches any whitespace, when searching (searching for "hello world" will also find "hello" at the end of a line, with "world" at the start of the next line).
http://vim.wikia.com/wiki/Search_for_visually_selected_text
для меня визуальное выделение текста с последующим нажатием * просто расширяет мой визуальный выбор.
Вы не можете по умолчанию, если вы не поместите в vimrc отображение со страницы ..
Я только что узнал (из прекрасной книги Практический Vim), что для этого есть плагин. Вы можете найти плагин на GitHub.
Плагин позволяет искать визуальное выделение с помощью * и #.
Обратите внимание, что другие ответы не экранируются. Используя эти методы, любые выбранные метасимволы не будут искать буквально, в зависимости от текущей настройки magic. Это может даже привести к сбою поиска метасимволов, требующих балансировки. Упомянутый здесь плагин выполнит экранирование перед поиском выделенного текста.
это работает, но, к сожалению, вы не можете использовать n для перехода к следующему найденному элементу, в то время как подходы Кори и CMS позволяют ..
Эта версия плагина на github более свежая (github.com/bronson/vim-visual-star-search). n и N работают должным образом для следующего и предыдущего.
Возможный дубликат Как искать выделенный текст?