如何搜索所选的(带v
和y
)字符串?我通常使用/
进行搜索,但我无法在/
之后粘贴所选字符串。
答案 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 "
/
的内容设为"
n
/ N
进行导航答案 3 :(得分:0)
如果您只关心搜索,可以使用我使用的作弊方法。通过 v 或 y + w 查询一个单词,然后发出命令
:%s//XYZ/gc
这将搜索最后搜索到的单词。然后,当您找到它时,它会要求确认替换为XYZ
,您只需点击q
即可退出。
答案 4 :(得分:0)
首先使用y
突出显示突出显示的文本。然后
/
Ctrl + r
"
以上命令将在/后面粘贴您已选中的内容。然后按ENTER