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

Я запускаю gVim на WinXP.

Я открываю папку, выбираю два файла и нажимаю «Различить с Vim». Снимок экрана:

Проблема с Vimdiff

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

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

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


Мое РЕШЕНИЕ

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

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

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

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


person drapkin11    schedule 05.04.2011    source источник
comment
ты видишь что-нибудь вообще происходит? Похоже, вам следует переустановить gvim. У меня это работает на XP с последней версией vim. Когда я пытаюсь это сделать, я вижу командное окно, а затем вижу окно vim в режиме сравнения с двумя файлами.   -  person IanNorton    schedule 06.04.2011
comment
Вы пробовали использовать команду :diffthis на каждой вкладке? Хотя в этом не должно быть необходимости.   -  person David Brown    schedule 06.04.2011
comment
@David: файлы уже находятся в режиме DIFF. Но нет, :diffthis ничего нового не делает.   -  person drapkin11    schedule 06.04.2011
comment
@IanNorton, почему ты поменял теги (с gvim на vim)? Насколько я понял, можно запустить версию консоли Win32. из vim.   -  person drapkin11    schedule 06.04.2011


Ответы (2)


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

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

person intuited    schedule 05.04.2011
comment
Ваш пост (а также @ sehe) привел меня к решению, которое мне подходит. Я разместил это как обновление своего вопроса. Спасибо! - person drapkin11; 11.04.2011

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

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

 :call VimDiff()

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

person sehe    schedule 05.04.2011
comment
Спасибо, я нашел определение функции в _vimrc. Он называется MyDiff, и он действительно работал, когда я его вызывал. - person drapkin11; 11.04.2011