Nehmen Sie zwei vertikal geöffnete Fenster in Vim

101

Ich habe zwei Dateien geöffnet. Sie werden im vertikalen Modus neben dem nächsten geöffnet. Kann ich diese beiden Dateien sofort unterscheiden, ohne Vim zu verlassen oder zu schließen?

Fatih Arslan
quelle

Antworten:

153

So unterscheiden Sie sich in allen sichtbaren Fenstern:

:windo diffthis

welches :diffthisin jedem Fenster ausgeführt wird.

So beenden Sie den Diff-Modus:

:diffoff!

(Die !Marken diffoffgelten für alle Fenster der aktuellen Registerkarte. Es wäre schön, wenn Sie diffthisdieselbe Funktion hätten, aber nicht.)

Nefrubyr
quelle
Der :windoBefehl macht es noch besser. Vielen Dank. Ich werde es abbilden, um es einfacher zu machen.
Fatih Arslan
1
Das ist eine gute Antwort, aber beachten Sie, dass das Minibufexplorer-Fenster vor diesem Vorgang geschlossen werden sollte, wenn es geöffnet wird. Andernfalls zeigt diff falsche Ergebnisse an.
Baldrs
Man kann einen Alias ​​verwenden :windo difft[this]. Ref::help diff
DmitrySandalov
@FatihArslan ,: windo diffthis macht in meinem Fall nichts, sondern lässt nur die linke graue Spalte neben den Zeilennummern. Ich habe zwei verschiedene Vim-Dateien geöffnet.
earik87
22

Geben Sie in jedem der Fenster, die Sie unterscheiden möchten, Folgendes ein:

:diffthis

Wenn Sie alle geöffneten Fenster unterscheiden möchten, können Sie Folgendes tun:

:windo diffthis

( windowendet den Befehl auf alle geöffneten Fenster an)

Nathan Fellman
quelle
6

Weiterverfolgung der früheren Antworten,

  • :windo difft(kurz für diffthis) startet den Diff-Modus in allen geöffneten Fenstern.
  • :windo diffo(kurz für diffoff) stoppt den Diff-Modus in allen geöffneten Fenstern.

Ich habe die folgenden Zuordnungen in meinem vimrc, um es einfacher zu machen:

command! Difft windo diffthis
command! Diffo windo diffoff
cxw
quelle
3

In Anlehnung an die früheren Antworten habe ich das von @cxw bereitgestellte Mapping angepasst. Das folgende Mapping schließt NERDTree automatisch und unterscheidet die geöffneten Fenster. Es spielt keine Rolle, ob NERDTree in der Nähe ist, es funktioniert genauso. Ich mache das ziemlich oft, deshalb habe ich mir ziemlich viel Zeit gespart.

command! Difft NERDTreeClose | windo diffthis
Jordi Freixa
quelle