有没有办法将当前搜索模式插入命令行?

Is there a way to insert the current search pattern into commandline?

安装 Ag.vim 后,我经常需要将搜索从 * 或 / 复制到命令行以搜索代码库中的所有文件。

示例用例:

  1. 我找到一串文字user_profile_uri,用*转select。

  2. 我按:进入命令行模式,输入Ag开始我的文件搜索

有没有办法将搜索光标中的文本移动或复制到命令行,而无需手动复制初始文本?

编辑:

我快弄明白了。 :registers 在命令行会给我一个寄存器列表,而在命令模式下我可以使用 Ctrl+R <registerkey> 来粘贴。但是,我需要的文本看起来像 \<user_profile_uri\>

您有几种方法可以做到这一点:

  • 通过 <c-r>{reg} 从寄存器中插入文本。在这种情况下,搜索寄存器 /。例如<c-r>/
  • 您也可以通过<c-r><c-w>
  • 插入光标下的单词
  • 根据文档,:h AgFromSearch,您可以 :AgFromSearch 到 运行 使用当前搜索模式

您可以结合使用 :AgFromSearch* 来构建一个映射,一步完成所有这些操作。将以下内容添加到您的 ~/.vimrc 文件中:

nnoremap <leader>* *:AgFromSearch<cr>

现在您可以使用 <leader>* 执行搜索。默认的 <leader>\ 所以它会变成 \*。有关详细信息,请参阅 :h <Leader>

如需更多帮助,请参阅:

:h c_ctrl-r
:h c_ctrl-r_ctrl-w
:h :AgFromSearch
:h <Leader>
:h registers
:h quote/