6

几个月来,我一直在使用 vim 和出色的逃犯插件。但是今天,由于我无法解决的原因,:Gstatus命令改变了行为。

它仍然会打开一个类似“git status”的屏幕,它会响应“R”来刷新它。但是当我进入“modified: ...”列表并点击“D”时,我并没有得到两个显示差异的拆分窗口,而是得到了“git diff”输出。此外,在修改后的文件上点击“-”根本不会暂存它。

好像所有的力量都从这种模式中消失了?

我还怀疑它打开的类似“git status”的屏幕实际上是 git status 的确切输出。它的格式也与以前不同;顶行是绿色的,下一行以红色背景加粗 - 这与我在 git commit 消息中得到的颜色方案相同(如果您不将第二行留空,则会突出显示错误)。不知道这是否有助于或只是混淆问题......

根据下面的评论,我检查了该屏幕上的键映射:

:verbose nmap D
> n  D           *@:<C-U>execute <SNR>72_StageDiff('Gvdiff')<CR>                                                                                                                                                       
> Last set from ~/.dotfiles/vim/bundle/vim-fugitive/plugin/fugitive.vim 

:verbose nmap -
> n  -           *@:<C-U>silent execute <SNR>72_StageToggle(line('.'),line('.')+v:count1-1)<CR>                                                                                                                        
> Last set from ~/.dotfiles/vim/bundle/vim-fugitive/plugin/fugitive.vim

任何人都知道我犯了什么错误,或者我得到的其他类似状态的屏幕是什么?

4

2 回答 2

6

在这种情况下,我的 Git 版本已经通过常规系统更新进行了更新,而我的 vim-fugitive 版本已经有一段时间没有更新了。

这意味着新的 Git 状态格式与旧版本的 vim-fugitive 的期望不兼容。

我使用 vundle 来管理我的 vim 插件,所以 vim 中的解决方案是运行

:BundleInstall!

这当然更新了我所有的插件,所以希望不会引起更多问题。但是现在,我在 vim 中的 :Gstatus 命令再次运行良好。

感谢Kamil Kisiel的回答

于 2013-12-09T00:43:14.167 回答
0

以防万一其他人遇到与我相同的问题:如果您在 gitconfig 中设置自定义core.commentchar,则这些逃犯映射将不再起作用。

在 GitHub 上打开了一个拉取请求,该请求为该问题提供了部分修复(https://github.com/tpope/vim-fugitive/pull/689) - 虽然我自己没有尝试过。

于 2015-11-27T14:27:33.193 回答