2009-07-08 8 views
110

Scenario: ho aperto Vim e incollato del testo. Apro una seconda scheda con :tabe e incollo un altro testo lì.Diff due schede in Vim

Obiettivo: Vorrei una terza scheda con un'uscita equivalente a scrivere entrambi i testi in file e aprirli con vimdiff.

Il più vicino che riesco a trovare è "diff il buffer corrente su un file", ma non diff due buffer aperti ma non salvati.

+1

qual è il comando tabe? – hhafez

+1

@hhafez - apre un nuovo buffer in una nuova scheda – Rook

+3

È abbreviazione di: tabedit, ovvero: tabnew. – TSomKes

risposta

176

Suggerisco di aprire il secondo file nella stessa scheda, invece di uno nuovo.

Ecco cosa faccio di solito:

:edit file1 
:diffthis 
:vnew 
:edit file2 
:diffthis 

Il comando :vnew divide la vista corrente in verticale in modo da poter aprire il secondo file lì. Il comando :diffthis (o breve: :difft) viene quindi applicato a ciascuna vista.

+4

Ah, non sapevo nemmeno di 'vnew', buon consiglio! – dukedave

+1

Fwiw, MacVim non sembra avere questo di default, ma penso che dovresti essere in grado di andare al terminale e digitare 'vimdiff file1.txt file2.txt' e buttarti fuori. – ruffin

+8

Mi hai appena fatto impazzire. La mia vita non sarà più la stessa dopo ': diffthis'. Grazie mille. Grazie! –

37

vorrei suggerire cercando :diffthis o :diffsplit

+10

': vert diffsplit' crea una diff-view più tradizionale che senza': vert' – ephemient

+7

Puoi: impostare diffopt + = vertical per rendere: vert il default. – graywh

+3

Inoltre, per scorrere due finestre contemporaneamente: ': imposta scrollbind' in entrambi. –

20

Quando si dispone di due file aperti in splitt verticale, eseguire

:windo diffthis

+6

usare '' ': diffoff''' per disattivare la modalità diff –

+1

Ma come passare da due schede a una divisione verticale? – erik

0

Il contenuto di tutte le schede sono all'interno dei buffer. Guarda i buffer:

:buffers 

Trova il numero giusto per il contenuto che dovrebbe essere diffed con il contenuto scheda corrente.

Aprire il tampone all'interno della vostra scheda corrente (FE numero di buffer di 4)

:sb 4 

Oppure fare per vista verticale:

:vertical sb 4 

Quindi è possibile semplice diff al contenuto con

:windo diffthis 

Se hai terminato l'analisi delle differenze puoi inserire:

:windo diffoff