假设我想在文件中搜索一些文本块。有没有办法对该文本进行视觉块选择,然后使其成为当前搜索词?这样我就可以 s//replacementText/g 而不在替换命令的左侧输入整个内容。
问问题
502 次
2 回答
4
制作一个可视块并将其拉到未命名的寄存器""
:选择可视块后,键入y
要拉。/
以- 或开始搜索,然后:s/
键入Ctrl-r
then"
以插入未命名寄存器的内容作为搜索词。
这不会使该块成为当前搜索,但它几乎一样容易。
Ctrl-r
可以在命令行中的任何地方使用,因此您也可以使用它来填充替换或替换文本,或在插入模式下使用。
于 2012-09-08T13:42:22.280 回答
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>
这里真正的优势在于它可以转义任何特殊字符,而不是仅仅粘贴到搜索命令中。它还减少了击键次数,从而最大限度地提高了您的任务的活力。
于 2012-09-08T13:47:10.347 回答