Vim:在没有括号的命令行中粘贴搜索寄存器

Jim*_*art 10 vim

在Vim中有没有办法在命令行上粘贴搜索寄存器,但没有周围的\<括号\>?我经常发现自己在缓冲区中进行搜索,然后想要使用匹配的模式作为参数grep(更具体地说,ack.vim).

如果您搜索foo然后输入:Ack '<C-r>/' ,会发生以下情况:

:Ack '\<foo\>'
Run Code Online (Sandbox Code Playgroud)

这将无法找到任何东西.我想要的是:

:Ack 'foo'
Run Code Online (Sandbox Code Playgroud)

这当然是一个简单的例子.对于更复杂的搜索结果,这将更有价值.

我知道<C-r><C-w>并且<C-r><C-a>在光标下粘贴单词/ WORD,这些通常就足够了,但并非总是如此.

rom*_*inl 9

<C-r>/在您键入时插入搜索模式:如果您这样做/foo,搜索寄存器包含foo.

请注意,<C-r>/插入搜索模式,而不是匹配:如果搜索foo\d,<C-r>/将插入foo\d,而不是foo9.

正如您所知,\<并且\>如果您使用*#为了将搜索限制为整个单词而添加.使用g*g#搜索全字,从而避免了\<\>.

这是一个可能有用的映射:

nnoremap <F6> :Ack '<C-r>=expand("<cword>")<CR>'
Run Code Online (Sandbox Code Playgroud)