可以说我要在文件中搜索一些文本块。有没有一种方法可以对该文本进行可视块选择,然后将其设置为当前搜索词?这样,我就可以执行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/

10-12 22:20