嗨,我使用vimgrep在项目中查找文本。
但是有点慢,因为我每次都要写:
vimgrep /text/ **/*.* | cwindow
是否有任何方法可以在C-shift-F中进行映射并显示文本框。
之后,当我按下Enter键时,将执行vimgrep命令。
这将节省很多时间
谢谢
答案 0 :(得分:1)
Vim具有高度可定制性(这是其流行的一个重要原因),因此有几种提供快捷方式的可能性:
映射不一定包含完整的命令。您只需准备命令行并将光标停留在某个位置,以便可以填写其余内容并使用 Enter 触发(Ex)命令。例如:
: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
命令不同),并且您正在构建更高级别的库编辑命令,随着时间的推移,这些命令可以重复使用,以构建更高级别的命令,从而使您的编辑更加高效。