可以说我要在文件中搜索一些文本块。有没有一种方法可以对该文本进行可视块选择,然后将其设置为当前搜索词?这样,我就可以执行s//replacementText/g,而无需在replace命令的左侧键入整个内容。
最佳答案
您必须原谅我,我不记得我在哪里找到它的了,但是它的确令人惊奇。只需添加到.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>
真正的好处是,这可以转义任何特殊字符,而不仅仅是粘贴到搜索命令中。它也减少了击键次数,从而最大限度地提高了任务的活力。
关于vim - 我可以在视觉上遮挡当前搜索词吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12331081/