在光标下添加单词以搜索模式

时间:2012-02-13 13:11:30

标签: vim

当光标位于单词theWord上时,使用 * ,vim直接跳转到该单词的下一个外观,即performes /\<theWord\>

问题:

当光标位于另一个单词上时,有没有办法在搜索中添加另一个单词otherWord,以便其中一个单词执行/\<theWord\>\|\<otherWord\>

2 个答案:

答案 0 :(得分:14)

尝试类似:

  1. * (搜索单词)
  2. 移动到其他地方
  3. :let @/=@/.'\|\<'.expand("<cword>").'\>'这会将前一个搜索模式添加到光标下的当前单词中,并带有一些分隔符(\|和单词边界...)
  4. 如果您愿意,请为其设置热键,例如: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是一个安全而无声的逃脱序列。