Я знаю, что могу использовать /регулярное выражение для поиска чего-либо. И я могу использовать ?для поиска в обратном направлении. И я могу использовать nи, Nчтобы повторить поиск вперед и назад.
Есть также два приятных сочетания клавиш: *или #будет искать слово под курсором (вперед / назад). Это очень полезно! (есть также g*и g#варианты)
Но ... Как только я выбрал текст с помощью визуального режима ( v), как я могу попросить Vim выполнить поиск именно этого текста? Быстрый просмотр :help
не ... да ... помог мне.
*
и#
! Было бы неплохо, если бы ваш вопрос также объяснил, чтоg*
иg#
будет делать;)Ответы:
Следующая последовательность будет делать то, что вы хотите, учитывая уже выделенный блок текста:
"
регистр по умолчанию)"
регистра)(*) Режим «очень без магии» интерпретирует следующий текст как обычный текст, а не как регулярное выражение. заметьте, однако, что
\
и/
все еще являются особенными и должны будут быть обработаны другими способами. Если в тексте нет символов, считающихся специальными, вы можете пропустить этот шаг.Источник: Vim Tips Wiki
источник
Вы можете сначала восстановить выделенный текст. затем
/
Ctrlr
"
Который будет вставлять то, что вы дернули после /.
источник
/\V<C-r>"
вместо этого. Приступая\V
к поисковому запросу, вы указываете vim использовать «очень без магии». Обратные слеши могут все еще вызывать проблемы. Смотрите:help \V
Ctrl+R
как вы получаете доступ к регистру, и*
это просто системный регистр буфера обмена. Например, вы также можете сделать:yaw
набрать слово в регистр"
( регистр по умолчанию), а затем/<C-r>"
искать эту строку./
чтобы использовать его для поиска, используйте?
вместо этого, поскольку обратный поиск по умолчанию экранирует косую черту. Затем вы можете нажать,N
чтобы продолжить поиск в прямом направлении.Я никогда не чувствовал необходимости в такой функции, но, учитывая, что вы можете найти потребность в любой функции в Vim, я думаю, что это должно помочь:
Я не тестировал его, но, глядя на код, кажется, это именно то, что вы ищете.
источник
Вы можете найти метод для создания этого поведения здесь, на вики-сайте vim .
источник
vnoremap // y/\V<C-r>=escape(@",'/\')<CR><CR>
Это решение позволяет вашему vim-поиску визуально выбранный контекст даже с многострочными и escape-символами.
Добавьте следующий код в себя
.vimrc
и выполните поиск по выбранному вами контенту//
. Вы также можете глобально заменить выбранный контент с помощью/s
. Или Локально замените выбранный контекст//
первым, а затем визуально выберите регион и:'<,'>s//{new_text}
.Вышеуказанная конфигурация только для поиска. Для всех моих настроек vim, пожалуйста, посетите .vimrc
источник
В моих конфигурациях на двух отдельных машинах, если я выбираю текст, а затем нажимаю на
/
него, автоматически выполняется поиск выделенного текста.источник