如何搜索所选文本?

时间:2011-12-21 08:51:16

标签: vim

如何搜索所选的(带vy)字符串?我通常使用/进行搜索,但我无法在/之后粘贴所选字符串。

5 个答案:

答案 0 :(得分:20)

在插入模式下,您可以使用CTRL-R插入Vim寄存器的内容。默认情况下,复制的文本将放入未命名的寄存器"中,因此要插入该文本,您需要在插入模式下键入<C-R>"。搜索提示使用具有自己的Command-line mode CTRL-R与插入模式中的{{3}}几乎相同。

因此,如果我只是将文字foo拉了一下,输入/<C-R>"就会在我按下回车后搜索文字foo

答案 1 :(得分:2)

我在vimrc中定义了此映射,它将*映射到将搜索模式定义为当前突出显示的内容(转义所有潜在的危险字符,并将突出显示的空间转换为任何空间序列)

xnoremap * :<C-U>let old_reg=getreg('"')|let old_regtype=getregtype('"')<CR>gvy/<C-R><C-R>=substitute(substitute(escape(@", '/\.*$^~['), '\s\+', '\\s\\+', 'g'), '\_s\+', '\\_s*', 'g')<CR><CR>gV:call setreg('"', old_reg, old_regtype)<CR>:let v:searchforward=1<CR>

要使用它,请使用v启动可视模式,然后突出显示要搜索的内容,然后按*而不是y

当然,您可以将#映射到向后搜索(除了v:searchforward应设置为0之外完全相同。

答案 2 :(得分:2)

:set hls
:vmap * y:let @/ = @"<CR>
  • set hls(高光搜索)
  • v =&gt; hjkl(选择一些内容)
  • *,将所选文字复制到reg "
  • 将reg /的内容设为"
  • n / N进行导航

答案 3 :(得分:0)

如果您只关心搜索,可以使用我使用的作弊方法。通过 v y + w 查询一个单词,然后发出命令

:%s//XYZ/gc 

这将搜索最后搜索到的单词。然后,当您找到它时,它会要求确认替换为XYZ,您只需点击q即可退出。

答案 4 :(得分:0)

首先使用y突出显示突出显示的文本。然后

  • /
  • Ctrl + r
  • "

以上命令将在/后面粘贴您已选中的内容。然后按ENTER