Почему не работает команда "Diff with Vim"?

Я использую gVim на WinXP.

Я открываю папку, выбираю два файла и нажимаю "Diff with Vim". Скриншот:

Выпуск Vimdiff

Графический интерфейс gVim запускается, каждый из файлов находится на отдельной вкладке. Я заметил, что каждая вкладка находится в режиме DIFF. Тем не менее, нет сравнения между двумя вкладками. Оба файла совершенно разные, но нет выделения, ничего - только серая линия слева, которую я интерпретирую как режим "DIFF":

Результат сравнения

Что здесь происходит? Мой vimdiff не работает или это что-то еще?


Мое решение

Ранее, когда мне нужно было открыть файлы на нескольких вкладках с помощью контекстного меню Windows, я последовал совету автора и добавил следующую строку в мой файл .vimrc: :autocmd BufReadPost * tab ball

Хотя это позволило мне открыть два файла на отдельных вкладках в одном окне Vim, я потерял возможность различать два файла, если бы захотел. Решение включить обе эти функции состоит в том, чтобы включить autocmd выше только в том случае, если я не хочу, чтобы два файла diff, что происходит, когда &diff==0, Таким образом, когда я изменил код в моем файле .vimrc, как показано ниже, я восстановил функциональность Diff с Vim:

if (&diff==0)
    :autocmd BufReadPost * tab ball
endif

Я также добавил это решение в часть комментариев ссылки Vim Wikia, упомянутой выше.

2 ответа

Решение

Это в лучшем случае подсказка, так как я не запускаю windows или даже не использую gvim под Linux. Если вариант -p поставляется в vimdiff, он откроет свои аргументы в отдельных вкладках. Поскольку дифференцирование выполняется только через окна в одной вкладке, это эффективно отключает диффузию. -p по-прежнему доступны, потому что vimdiff просто звонки vim -d ..., -p говорит vim поместить каждый аргумент в отдельную вкладку; это довольно полезно при обычном вызове vim. Так что может быть, вы как-то настроили vim, чтобы всегда делать это.

Я бы проверил что это Diff with Vim опция на самом деле делает и отслеживает его, чтобы увидеть, добавляет ли пакетный файл (или как они называются в эти дни..) по цепочке вызовов -p вариант вашего обычного вызова vim. IIRC вы можете сделать это из Windows Explorer; Я думаю, что есть опция в меню Вид, которая показывает все типы файлов. Вы можете просматривать и редактировать приложения, настроенные для "открытия" этих типов файлов.

Если я не ошибаюсь, gvim определяет пользовательскую функцию VimDiff() на своем складе _vimrc (:e +/Diff $MYVIMRC)

Вы можете проверить, работает ли он, выполнив

 :call VimDiff()

Вам нужно проверить фактическое имя функции и параметры (если таковые имеются), так как у меня нет машины с Windows под рукой на m.m.

Другие вопросы по тегам