我可以对当前搜索词进行视觉阻止吗?

时间:2012-09-08 13:20:45

标签: vim

假设我想在文件中搜索一些文本块。有没有办法对该文本进行视觉块选择,然后将其作为当前搜索词?这样我就可以在替换命令的左侧不输入整个内容来执行// replacementText / g。

2 个答案:

答案 0 :(得分:4)

制作一个视觉块并将其拉到未命名的注册"":选择一个视觉块,键入y以进行拉伸。使用/ - 或:s/开始搜索,然后键入Ctrl-r,然后键入",将未命名寄存器的内容作为搜索字词插入。

这不会使阻止当前搜索,但它几乎一样容易。

Ctrl-r可以在命令行中的任何位置使用,因此您也可以使用此选项,例如填写替换或替换文本,或插入模式。

答案 1 :(得分:3)

你必须原谅我,我不记得我在哪里找到了这个,但它创造了奇迹。只需添加到.vimrc即可。在视觉选择后使用典型的*#

" Search for selected text, forwards or backwards.
vnoremap <silent> * :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy/<C-R><C-R>=substitute(
  \escape(@", '/\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR>
  \gV:call setreg('"', old_reg, old_regtype)<CR>
vnoremap <silent> # :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy?<C-R><C-R>=substitute(
  \escape(@", '?\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR>
  \gV:call setreg('"', old_reg, old_regtype)<CR>

这里的真正优势在于它可以逃脱任何特殊的角色,而不仅仅是粘贴到搜索命令中。它也可以减少击键次数,从而最大限度地提高任务的效果。