假设我想在文件中搜索一些文本块。有没有办法对该文本进行视觉块选择,然后将其作为当前搜索词?这样我就可以在替换命令的左侧不输入整个内容来执行// replacementText / g。
答案 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>
这里的真正优势在于它可以逃脱任何特殊的角色,而不仅仅是粘贴到搜索命令中。它也可以减少击键次数,从而最大限度地提高任务的效果。