You don't even need to quit editor without saving changes, you can just ^Z it, add new changes, fg the editor back and continue with your commit message.
:r !git status -v
Type my commit message above the output, and then visually highlight the lines of my commit message and then run :'<,'> !git commit -F -
In fact, if I see an issue with the diff, I can update the relevant file and then run: :!git add %
and then go back to the window with the status output, delete it and rerun the status -v command.In fact, if I want to be more fine grained with the changes I stage in git, I can run:
:r !git diff
to get the output of the unstaged changes, copy the hunk header lines, paste them above the hunk I want to stage, visually highlight the hunk with the header lines, and then run: :'<,'> !git apply --cached -
to stage that hunk. I've even done things like using recountdiff to update the hunk header if I decide to removed added lines or restore deleted lines in a hunk. Personally, I think it's easier than using git add -p or reset -p.[is writing commit message]
Oh wait… What did I change?
^Z
git diff --cached
Oh yeah. fgBut it's still more efficient method for single repository project where using UI git client would be the overkill.
I have no idea why anyone would ever not use this to be honest.