Prendi il diff di due finestre aperte verticali in Vim


103

Ho due file aperti. Si aprono in modalità verticale, accanto al successivo. Posso diffondere istantaneamente questi due file senza uscire o chiudere Vim?

Risposte:


154

Per iniziare a differire su tutte le finestre visibili:

:windo diffthis

che esegue :diffthissu ogni finestra.

Per terminare la modalità diff:

:diffoff!

(Le !marche si diffoffapplicano a tutte le finestre della scheda corrente: sarebbe bello se diffthisavesse la stessa funzione, ma non lo è.)


Il :windocomando lo rende ancora migliore. Grazie. Lo mapperò per renderlo più facile.
Fatih Arslan

1
Questa è una buona risposta, ma nota che la finestra di minibufexplorer dovrebbe essere chiusa prima di questa operazione, se aperta. Altrimenti diff mostra risultati errati.
baldrs

Si può usare un alias :windo difft[this]. Rif::help diff
DmitrySandalov

@FatihArslan,: windo diffthis non fa nulla nel mio caso, ma lascia la colonna grigia sul lato sinistro accanto ai numeri di riga. Ho due diversi file Vim aperti.
earik87

22

in ciascuna delle finestre che vuoi diff digitare:

:diffthis

Se vuoi diffondere tutte le finestre aperte, puoi fare:

:windo diffthis

( windoapplicherà il comando a tutte le finestre aperte)


7

Facendo seguito alle risposte precedenti,

  • :windo difft(abbreviazione di diffthis) avvierà la modalità diff in tutte le finestre aperte.
  • :windo diffo(abbreviazione di diffoff) interromperà la modalità diff in tutte le finestre aperte.

Ho le seguenti mappature nel mio vimrcper renderlo più facile:

command! Difft windo diffthis
command! Diffo windo diffoff

3

Seguendo le risposte precedenti ho adattato la mappatura fornita da @cxw La seguente mappatura chiude automaticamente NERDTree e diff le finestre aperte. Non importa se NERDTree è vicino, funziona allo stesso modo. Lo faccio abbastanza spesso, quindi mi ha fatto risparmiare un po 'di tempo.

command! Difft NERDTreeClose | windo diffthis
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.