我几个月来一直在使用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
任何人都知道我正在犯的错误,或者我正在获得的其他类似状态的屏幕是什么?
答案 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) - 虽然我自己没有尝试过。