Сравните два вертикально открытых окна в Vim

У меня открыто два файла. Они открываются в вертикальном режиме, рядом друг с другом. Могу ли я мгновенно сравнить эти два файла, не выходя из Vim и не закрывая его?


person Fatih Arslan    schedule 08.12.2010    source источник


Ответы (4)


Чтобы начать различать все видимые окна:

:windo diffthis

который выполняет :diffthis в каждом окне.

Чтобы выйти из режима сравнения:

:diffoff!

(! заставляет diffoff применяться ко всем окнам текущей вкладки - было бы неплохо, если бы diffthis имел ту же функцию, но это не так.)

person Nefrubyr    schedule 08.12.2010
comment
Команда :windo делает его еще лучше. Спасибо. Я нанесу на карту, чтобы было проще. - person Fatih Arslan; 08.12.2010
comment
Это хороший ответ, но обратите внимание, что окно minibufexplorer должно быть закрыто перед этой операцией, если оно открыто. В противном случае diff показывает неправильные результаты. - person baldrs; 30.07.2014
comment
Можно использовать псевдоним:windo difft[this]. Ссылка: :help diff - person DmitrySandalov; 22.04.2015

в каждом из окон, которые вы хотите ввести:

:diffthis

Если вы хотите изменить все открытые окна, вы можете сделать:

:windo diffthis

(windo применит команду ко всем открытым окнам)

person Nathan Fellman    schedule 08.12.2010

В продолжение предыдущих ответов,

  • :windo difft (сокращение от diffthis) запускает режим сравнения во всех открытых окнах.
  • :windo diffo (сокращение от diffoff) остановит режим сравнения во всех открытых окнах.

У меня есть следующие сопоставления в моем vimrc, чтобы упростить его:

command! Difft windo diffthis
command! Diffo windo diffoff
person cxw    schedule 29.06.2015

Следуя предыдущим ответам, я адаптировал сопоставление, предоставленное @cxw. Следующее сопоставление автоматически закрывает NERDTree и различает открытые окна. Неважно, закрыт ли NERDTree, он работает точно так же. Я делаю это довольно часто, так что это сэкономило мне довольно много времени.

command! Difft NERDTreeClose | windo diffthis
person Jordi Freixa    schedule 06.06.2018