Возьмите разницу двух вертикальных открытых окон в 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

3

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

command! Difft NERDTreeClose | windo diffthis
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.