Как найти выделенный текст?

Как искать выбранную строку (v и y)? Обычно я ищу с /, но я не могу вставить выделенную строку после /.

Ответ 1

В режиме вставки вы можете использовать CTRL-R для вставки содержимого регистров Vim. По умолчанию скопированный текст помещается в безымянный регистр ", поэтому для вставки этого текста вы вводите <C-R>" в режиме вставки. В приглашении поиска используется режим командной строки, который имеет свои собственные CTRL-R, который почти идентичен работе в режиме Insert.

Итак, если я просто дернул текст foo, набрав /<C-R>", он будет искать текст foo после нажатия клавиши ввода.

Ответ 2

У меня есть это сопоставление, определенное в моем vimrc, оно отображает *, чтобы определить шаблон поиска как то, что в настоящее время выделено (экранирование всех потенциальных опасных символов и преобразование пробела в то, что выделено для любой последовательности пробелов)

xnoremap * :<C-U>let old_reg=getreg('"')|let old_regtype=getregtype('"')<CR>gvy/<C-R><C-R>=substitute(substitute(escape(@", '/\.*$^~['), '\s\+', '\\s\\+', 'g'), '\_s\+', '\\_s*', 'g')<CR><CR>gV:call setreg('"', old_reg, old_regtype)<CR>:let v:searchforward=1<CR>

Чтобы использовать его, запустите визуальный режим с помощью v, а затем выделите, что вы хотите найти, и нажмите * not y.

Конечно, вы можете отобразить # для поиска назад (точно так же, за исключением того, что v:searchforward должно быть установлено на 0.

Ответ 3

:set hls
:vmap * y:let @/ = @"<CR>
  • set hls (поиск по свету)
  • v = > hjkl (выберите что-то)
  • нажмите *, скопируйте выделенный текст в реестр "
  • установить содержимое reg / как "
  • нажмите n/n для навигации по

Ответ 4

Если вам интересны только поисковые запросы, вы можете использовать метод читов, который я использую. Янь слово через v или y + w, затем выполните команду

:%s//XYZ/gc 

Это приведет к поиску последнего искомого слова. Затем, когда вы его найдете, он попросит подтверждение заменить на XYZ, и все, что вам нужно сделать, это нажать q, чтобы выйти.