有没有办法将当前搜索模式插入命令行?
Is there a way to insert the current search pattern into commandline?
安装 Ag.vim 后,我经常需要将搜索从 * 或 / 复制到命令行以搜索代码库中的所有文件。
示例用例:
我找到一串文字user_profile_uri
,用*
转select。
我按:
进入命令行模式,输入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/
安装 Ag.vim 后,我经常需要将搜索从 * 或 / 复制到命令行以搜索代码库中的所有文件。
示例用例:
我找到一串文字
user_profile_uri
,用*
转select。我按
:
进入命令行模式,输入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/