Как получить результат «git commit -v» в разделенном окне, а не в комментариях? - PullRequest
2 голосов
/ 30 апреля 2011

Из git help commit: « -v, --verbose Показать унифицированную разницу между коммитом HEAD и тем, что будет зафиксировано в нижней части шаблона сообщения фиксации. Обратите внимание, что в этом выводе diff нет строк с префиксом #. »

Это замечательно, но я бы предпочел, чтобы оно было в вертикальном окне.

Ответы [ 3 ]

3 голосов
/ 01 мая 2011

Обычно я делаю это:

:new<CR>:r!git diff --cached<CR>:setf diff

Использование: vnew вместо: new для получения вертикального разделения.

1 голос
/ 02 мая 2011

В $VIMRUNTIME/ftplugin/gitcommit.vim есть команда vim :DiffGitCached.Он использует окно предварительного просмотра для отображения различий.Вы можете сделать локальную копию (~/.vim/ftplugin/gitcommit.vim) и слегка изменить функцию gitdiffcached(...):

  1. вставьте setlocal previewheight=0 вверху функции, чтобы оба окна были равны по размеру.
  2. Измените строку, начинающуюся с exe "pedit "... на exe "vert bot pedit "..., чтобы окно предварительного просмотра было открыто справа.
  3. вставьте wincmd p в конце функции, если вы хотите, чтобы фокус переместился назадОкно commit-msg по умолчанию.
0 голосов
/ 04 мая 2011

Это должно делать то, что вы хотите:

$ 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

  1. Перейти в начало файла
  2. Перейти на первый блок различий
  3. Обрезать все блоки различий(до конца файла)
  4. Создать новое окно по вертикали слева от текущего окна (см. опцию 'splitright', если вам не нравится эта позиция)
  5. Вставьте diffhunks
  6. Установите тип файла на 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"
...