Confronto tra due file in Vim


63

È possibile visualizzare due file fianco a fianco in Vim? In tal caso, come posso impostare il mio editor per fare questo, e c'è un modo difftra i due file all'interno di Vim?

Sono a conoscenza dei comandi :nexte :prev, ma questo non è ciò che sto cercando. Sarebbe davvero bello vedere i due file in tandem.

Risposte:


43

Apri la vista affiancata:

Ctrl+w v

Cambia tra loro:

Ctrl+w h or l

Guarda il comando vimdiff , parte del pacchetto vim, se vuoi una vista simile a diff:

vimdiff file1.txt file2.txt

2
C'è un modo per bloccare lo scorrimento tra le due finestre?
Zaid,

1
Sì, controlla vimdoc.sourceforge.net/htmldoc/options.html#%27scrollbind%27 - con vimdiff è l'impostazione predefinita.
maxschlepzig,

1
Di solito uso "diff file1 file2" sulla riga di comando.
Djangofan,

2
@Zaid Use vimdiff file1.txt file2.txt(vedi sotto)
Eduardo Cuomo,

42

Puoi anche aprire vim in modalità schermo diviso, con l' -Oopzione: -

vim -O file1 [file2 ...]

Per attivare la modalità diff, è necessario eseguire il :diffthiscomando in ciascun riquadro.

Un altro scenario d'uso è se hai già un file aperto in vim e vuoi aprirlo e confrontarlo con un altro. Quindi è possibile utilizzare i seguenti comandi vim: -

:vs otherfile (open otherfile in vertical split screen)
:diffthis (turn on diff mode in original file)
Ctrl+w l  (swap to newly opened file)
:diffthis (turn on diff mode in opened file)

È quindi possibile disattivare la modalità diff in ciascun riquadro con il comando vim :diffoff.

EDIT
E l'altro standard che non è stato menzionato: -

vim -d file1 [file2 ...]

Ciò equivale a chiamare vimdiffdirettamente.


11
:windo :diffthispuò essere utilizzato al posto degli ultimi tre comandi.
Bernhard,

2

O semplicemente apri il primo file in VIM, quindi :vert diffsplit file2 :vertlo divide in verticale.

diffsplit fa un diff, divide i file e scorre li blocca.

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.