当光标位于单词theWord
上时,使用 * ,vim直接跳转到该单词的下一个外观,即performes /\<theWord\>
。
问题:
当光标位于另一个单词上时,有没有办法在搜索中添加另一个单词otherWord
,以便其中一个单词执行/\<theWord\>\|\<otherWord\>
?
答案 0 :(得分:14)
尝试类似:
:let @/=@/.'\|\<'.expand("<cword>").'\>'
这会将前一个搜索模式添加到光标下的当前单词中,并带有一些分隔符(\|
和单词边界...)nnoremap <F4> :let @/.='\\|\<'.expand("<cword>").'\>'<CR>
答案 1 :(得分:6)
尝试
:nnoremap <silent> + :let @/ .= '\\|\<'.expand('<cword>').'\>'<cr>n
当点击“+”时,它会将光标下的单词追加到搜索寄存器,并跳转到任何搜索模式的* n * ext出现。
如果您希望将其扩展到可视模式,(如it could be done to n_star),则
:vnoremap <silent> + <c-\><c-n>:let @/ .= '\\|'.escape(lh#visual#selection(), '/\^$*.[~')<cr>n
使用lh#visual#selection()
获取当前选择,使用escape()
来中和正则表达式中的某些活动字符。 v_CTRL-\_CTRL-N
是一个安全而无声的逃脱序列。