Возьмите разницу двух вертикальных открытых окон в Vim

103

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

Фатих Арслан
источник

Ответы:

155

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

:windo diffthis

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

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

:diffoff!

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

Нефрубыр
источник
Команда :windoделает это еще лучше. Спасибо. Я нанесу карту, чтобы было проще.
Фатих Арслан
1
Это хороший ответ, но обратите внимание, что окно minibufexplorer должно быть закрыто перед этой операцией, если оно открыто. В противном случае diff показывает неверные результаты.
baldrs
Можно использовать псевдоним :windo difft[this]. Ссылка::help diff
Дмитрий Сандалов
@FatihArslan,: windo diffthis в моем случае ничего не делает, а просто оставляет слева серый столбец рядом с номерами строк. У меня открыто два разных файла Vim.
Earik87
22

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

:diffthis

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

:windo diffthis

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

Натан Феллман
источник
7

Продолжая предыдущие ответы,

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

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

command! Difft windo diffthis
command! Diffo windo diffoff
cxw
источник
3

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

command! Difft NERDTreeClose | windo diffthis
Хорди Фрейша
источник