I've been using vim with the excellent fugitive plugin for a few months now. But today, for reasons that I can't work out, the :Gstatus
command has changed behaviour.
It still opens up a "git status"-like screen, which does respond to "R" to refresh it. But when I go to a "modified: ..." listing and hit "D", instead of getting two split windows showing the diff, I just get the "git diff" output. Also, hitting "-" on the modified file does not stage it at all.
It's like all the power has vanished from this mode ?
I also suspect the "git status"-like screen it's opening is in fact the exact output from git status. It's also got different formatting than before; the top line is green, and the next line bolded with a red background - this is the same colorscheme as I get for git commit messages (which highlight an error if you don't leave the second line blank). Not sure if this helps or just confuses the issue...
In line with a comment below, I've checked the key mappings on that screen:
: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
Anyone know what mistake I'm making, or what this other status-like screen I'm getting is ?
In this case, my version of Git had been updated by a regular system update, whereas my version of vim-fugitive had not been updated for some time.
This meant the new Git status format was not compatible with the older version of vim-fugitive's expectataions.
I use vundle to manage my vim plugins, so the solution in vim was to run
This updated ALL my plugins of course, so hopefully won't cause more problems. But for now, my :Gstatus command in vim is working nicely again.
Thanks to Kamil Kisiel for this answer