Gstatus改变了vim-fugitive的行为

时间:2013-12-05 01:15:08

标签: git vim vim-fugitive

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

它仍会打开一个“git status”式屏幕,它会响应“R”来刷新它。但是,当我进入“修改:...”列表并点击“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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

:BundleInstall!

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

感谢Kamil Kisiel获得此答案

答案 1 :(得分:0)

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

GitHub上有一个拉取请求可以解决问题的部分修复(https://github.com/tpope/vim-fugitive/pull/689) - 虽然我自己没有尝试过。