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

ezd*_*ena 18 vim

使用*时光标就一个字theWord,VIM直接跳到正是这样一句话,即performes接下来出场/\<theWord\>.

问题:

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

Zso*_*kai 15

尝试类似的东西:

  1. * (搜索一个单词)
  2. 搬到其他地方
  3. :let @/=@/.'\|\<'.expand("<cword>").'\>'这会将前一个搜索模式附加到光标下的当前单词,并带有一些分隔符(\|以及单词边界...)
  4. 如果你愿意,为它设置一个热键,如: nnoremap <F4> :let @/.='\\|\<'.expand("<cword>").'\>'<CR>


Luc*_*tte 6

尝试

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

当点击"+"时,它会将光标下的单词附加到搜索寄存器,并跳转到任何搜索模式的*n*ext出现.

如果你想将它扩展到可视模式,(可以对n_star进行),你就可以了

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

随着lh#visual#selection()获取当前的选择,并且escape()在正则表达式中和一些积极的角色.v_CTRL-\_CTRL-N是一个安全和沉默的逃脱序列.

  • `:help`命令允许询问你不知道的vim精度, - >`:h nnoremap`,`:h:let`,`:h.=`,`:h expand()`,或`:hn`,`:h @ /`NB:<cr>结束命令模式. (3认同)