Это должно делать то, что вы хотите:
$ GIT_EDITOR="vim -c 'normal gg/^diff^MdGgg:vnew^MP:set ft=diff^M'"
$ export GIT_EDITOR
$ git commit -v
"^ M" - это клавиша ввода (возврат каретки), вводимая нажатием Ctrl + V и затем нажатием enter.
Аргумент опции "-c" указывает vim
- Перейти в начало файла
- Перейти на первый блок различий
- Обрезать все блоки различий(до конца файла)
- Создать новое окно по вертикали слева от текущего окна (см. опцию 'splitright', если вам не нравится эта позиция)
- Вставьте diffhunks
- Установите тип файла на diff, чтобы получить хорошее выделение (у вас есть "синтаксис" в вашем .vimrc, не так ли?)
Очевидно, вы хотите, чтобы эта командабыть вызванным только когда вы запускаете "git commit -v" и нигде больше, потому что последовательности команд vim применяются только в этом случае, поэтому может быть плохой идеей установить GIT_EDITOR как таковой.
Лучшей конфигурацией является использованиепсевдоним:
$ alias gcv="GIT_EDITOR=\"vi -c 'normal gg/^diff^MdGgg:vnew^MP:set ft=diff^M'\" git commit -v"