Искать выделение в vim

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

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

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

Возможный дубликат Как искать выделенный текст?

acm 13.09.2016 20:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
111
1
22 857
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

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

@CMS. Спасибо. Отличный совет! Использование: reg, чтобы увидеть, что находится в ваших регистрах, а затем использование cntl-R N, чтобы получить то, что находится в регистре N, отлично!

Rob Wells 15.12.2008 23:22

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

Отвечать

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

Объяснение

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

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

Мне нравится этот, потому что мне неудобно набирать <ctrl-r>.

Jan 06.03.2013 00:40

Отлично! Используя emacs в evil-mode, это действительно работает, тогда как принятый ответ с треском ломается (вероятно, из-за использования ключа Ctrl).

eestrada 26.01.2016 02:25

Отлично подходит для простых строк, но не экранирует специальные символы регулярных выражений, как указано в комментарий этого другого ответа.

Bluu 21.05.2016 01:44

И даже дергать не нужно. Выберите его на визуальном уровне, q/gvp, где gv означает последний визуальный выбор ...

user2231796 25.04.2018 21:20

@nwildner, у меня q/gvp не работает. Не могли бы вы пояснить свое предложение?

bam 25.02.2019 18:57

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

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

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

martin jakubik 29.08.2014 12:00

Вы не можете по умолчанию, если вы не поместите в vimrc отображение со страницы ..

Ayrat 26.10.2016 09:39

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

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

Обратите внимание, что другие ответы не экранируются. Используя эти методы, любые выбранные метасимволы не будут искать буквально, в зависимости от текущей настройки magic. Это может даже привести к сбою поиска метасимволов, требующих балансировки. Упомянутый здесь плагин выполнит экранирование перед поиском выделенного текста.

Kurt Hutchinson 27.01.2015 00:17

это работает, но, к сожалению, вы не можете использовать n для перехода к следующему найденному элементу, в то время как подходы Кори и CMS позволяют ..

Ayrat 26.10.2016 09:54

Эта версия плагина на github более свежая (github.com/bronson/vim-visual-star-search). n и N работают должным образом для следующего и предыдущего.

Christian Long 22.01.2021 23:25

Другие вопросы по теме