Добавить слово под курсором в шаблон поиска
Используя *, когда курсор находится на слове 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-последовательность.