Я прочитал Vimdiff и Просмотр различий с Vimdiff, а также выполнение различных поисков в Google с использованием таких вещей, как" vimdiff multiple "," vimdiff git "," команды vimdiff "и т. д.
При использовании do или diffg я получаю сообщение об ошибке «Более двух буферов в режиме сравнения, не знаю, какой из них использовать».
При использовании diffg v: fname_in я получаю «Нет подходящего буфера для v: fname_in».
Из документации vimdiff:
: [диапазон] diffg [et] [bufspec]
Изменить текущий буфер, чтобы отменить разницу с другим буфером. Если задано [bufspec], используется этот буфер. Если [bufspec] относится к текущему буферу, то ничего не происходит. В противном случае это работает, только если есть еще один буфер в режиме сравнения.
и больше:
Если 'difffexpr' не пусто, Vim оценивает получение файла diff в указанном формате. Эти переменные устанавливаются на используемые имена файлов:
v: fname_in исходный файл
v: fname_new новая версия того же файла
v: fname_out результирующий файл сравнения
Итак, мне нужно получить имя bufspec, но переменные по умолчанию (fname_in, fname_new и fname_out) не установлены.
Я запустил команду git mergetool в Linux через терминал.
[Edit] Частичное решение, которое породило больше вопросов. Я использовал «имя файла» внизу буфера. Это только половина ответа, потому что иногда я получаю сообщение об ошибке "Файл не существует". Я считаю, что удаленная версия файла постоянно «не существует». Я подозреваю, что это как-то связано с git и индексацией.
Как получить значение bufspec последовательно при использовании vimdiff через git-mergetool?