首页 > 解决方案 > Vim 在命令中的文件快捷方式中查找

问题描述

嗨,我使用 vimgrep 在项目中查找文本。

但是它有点慢,因为我每次都必须写这个:

vimgrep /text/ **/*.* | cwindow

有什么方法可以将它映射到例如 C-shift-F 并显示文本框。

之后,当我按 Enter 时,它将执行 vimgrep 命令。

这样可以节省很多时间

谢谢

标签: vim

解决方案


Vim 是高度可定制的(这是它受欢迎的一个重要原因),因此有几种可能性可以提供快捷方式:

不完全映射

映射不一定包含完整的命令。您可以只准备命令行并将光标留在某个位置,以便您可以填写其余部分并使用 触发(Ex)命令Enter。例如:

:nnoremap <Leader>f :vimgrep // **/*.* <Bar> cwindow<Home><Right><Right><Right><Right><Right><Right><Right><Right><Right>

尾随键将光标定位在 之间//,因此您可以填写text,然后执行命令。

注意:您建议<C-S-f>的映射将与<C-f>(当前实现中的一个不幸限制)相同,因此会覆盖有用的内置命令。我改为使用<Leader>f(该键的默认值为\; cp. :help <Leader>)。

自定义命令

这已经很好了,但是假设我们永远不需要编辑命令的其他部分,我们可以将其缩短为自定义命令,例如:FindText

command! -nargs=1 FindText vimgrep /<args>/ **/*.* | cwindow

有了这个,你可以通过搜索:FindText text。如果您仍然喜欢映射,这将成为

:nnoremap <Leader>f :FindText<Space>

自定义命令的其他好处是这些命令更容易从命令行历史中调用(因为它们与:vimgrep您可能使用的其他命令不同),并且您正在构建一个更高级别的编辑命令库,随着时间的推移可以重复使用以构建更多更高级别的命令,从而使您的编辑更有效率。


推荐阅读