【问题标题】:Getting 'git grep' to work effectively in vim让 'git grep' 在 vi​​m 中有效工作
【发布时间】:2014-03-22 18:31:39
【问题描述】:

Fugitive.vim 允许我运行git grep 命令;不幸的是,结果没有存储在 quickfix-list 中,所以我需要在 :Ggrep 之后运行 :cw 以获得易于解析的结果列表。

我想输入 :Ggr "def my_function" 而不是:

:Ggrep "def my_function"
:cw

如何在我的 .vimrc 文件中定义这个 :Ggr 命令?

编辑

一旦:Ggr命令被定义,我就可以映射到光标下的单词上的git grep,这真是太棒了:

nnoremap <C-F> :Ggr <cword><CR>

【问题讨论】:

  • 请注意,我必须将 :Ggr 的参数传递给 :Ggrep... 所以它不像连续运行两个命令那么简单。
  • :Ggrep 确实填充了quickfix 列表,但是窗口不会自动打开。也许您希望 quickfix 窗口在任何 grep 调用后打开,autocmd QuickFixCmdPost *grep* cwindow,正如 vim-fugitive FAQ section 中所建议的那样。

标签: git vim vim-fugitive


【解决方案1】:

这对我有用:

:command -nargs=+ Ggr execute 'silent Ggrep!' <q-args> | cw | redraw!

【讨论】:

  • 太棒了!这确实是对上一个答案的改进。
  • 您可以将其添加为对我的回答的评论,因为这只是对其的一个小调整。许多人会认为你做的不好。至少记录更改以及为什么需要更改。
【解决方案2】:

您可以使用&lt;args&gt; 符号插入为您的自定义命令提供的参数:

:command -nargs=+ Ggr execute 'Ggrep' <q-args> | cw

注意:由于:Ggrep 命令没有-bar 参数,它不能被链接,所以必须使用:execute

【讨论】:

  • 这几乎是完美的:Ggrep 命令打开了一个需要在运行 cw 命令之前关闭的窗口,所以我必须按 来关闭它。知道如何改进吗?
  • 您可以通过... | execute "normal \&lt;CR&gt;" | cw 模拟该按键,或者(也许更简单)尝试... | close | cw
  • 这似乎不起作用,我仍然有在 :Ggrep 命令之后显示的“按 ENTER 类型命令继续”消息。
  • 哦,那个回车提示,不是窗口;我误解了;是的,这很难避免。
  • 太糟糕了。反正你的回答就足够了。
【解决方案3】:

已经在其中一个 cmets 中提到过,但我认为 fugitive.vim 网站上的插件推荐解决方案值得拥有自己的答案:

autocmd QuickFixCmdPost *grep* cwindow

(来自:https://github.com/tpope/vim-fugitive

【讨论】:

  • 这是正确的。但是,这需要在 :Ggr 命令后按一次,不方便。
猜你喜欢
  • 2018-09-30
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多