vim - Vim 在命令中的文件快捷方式中查找
问题描述
嗨,我使用 vimgrep 在项目中查找文本。
但是它有点慢,因为我每次都必须写这个:
vimgrep /text/ **/*.* | cwindow
有什么方法可以将它映射到例如 C-shift-F 并显示文本框。
之后,当我按 Enter 时,它将执行 vimgrep 命令。
这样可以节省很多时间
谢谢
解决方案
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
您可能使用的其他命令不同),并且您正在构建一个更高级别的编辑命令库,随着时间的推移可以重复使用以构建更多更高级别的命令,从而使您的编辑更有效率。
推荐阅读
- c# - 使用激活库模式注册 .NET DLL
- javascript - css 动画跨屏并返回
- sql - 将 varchar "dd/mm/yyyy hh:mm:ss" 转换为 datetime2
- c++ - 无法使用 OpenGL 核心配置文件并创建和 OpenGL 4.x 上下文
- javascript - 如何在同一个文件夹中安装 Angular 和 Nodejs
- java - 如何正确让多个线程访问共享缓冲区
- php - 在 Doctrine Repository 中处理未映射的属性
- css - 如何渲染多行文本组件,行间有白色间隙
- python - Having multiple correct answers in a user defined dictionary
- vba - 如何检测单元格是否由“=IF()”公式而不是用户更改