Добавить слово под курсором в шаблон поиска

Используя *, когда курсор находится на слове theWord, vim непосредственно переходит к следующему виду именно этого слова, т.е. выполняет /\<theWord\>.

Вопросы:

Есть ли способ добавить другое слово otherWord к поиску, когда курсор находится на этом другом слове, так что вы выполняете /\<theWord\>\|\<otherWord\>?

Ответы

Ответ 1

Попробуйте что-то вроде:

  • * (для поиска слова)
  • перемещение в другое место
  • :let @/[email protected]/.'\|\<'.expand("<cword>").'\>' это добавляет к предыдущему шаблону поиска текущее слово под курсором) с некоторыми разделителями (\| и границами слов...)
  • если вы хотите, установите для него горячую клавишу, например: nnoremap <F4> :let @/.='\\|\<'.expand("<cword>").'\>'<CR>

Ответ 2

Try

:nnoremap <silent> + :let @/ .= '\\|\<'.expand('<cword>').'\>'<cr>n

Это добавит слово под курсором в регистр поиска, когда "+" будет удалено, и перейдет к появлению * n * ext любого найденного шаблона.

Если вы хотите расширить его до визуального режима, (как это можно сделать с помощью n_star), у вас есть

:vnoremap <silent> + <c-\><c-n>:let @/ .= '\\|'.escape(lh#visual#selection(), '/\^$*.[~')<cr>n

С lh#visual#selection(), чтобы выбрать текущий выбор, и escape(), чтобы нейтрализовать некоторые активные символы в регулярных выражениях. v_CTRL-\_CTRL-N - безопасная и бесшумная escape-последовательность.