2015-01-08 8 views
20

Nel mio caso, ho due file file1 e file2. Utilizzando vimdiff, voglio unire le modifiche come segue:Unisci le modifiche utilizzando vimdiff

  1. In prima differenza, posto linea da file1 sopra la linea da file2. Significa che la differenza come Listing 2 in file2 e List 2 deve essere List 2 seguita da Listing 2 nel file unito.
  2. Caso inverso in un'altra modifica.

L'istantanea è mostrata di seguito.

enter image description here

Come possiamo raggiungere questo obiettivo utilizzando vimdiff?

risposta

8

È possibile passare avanti e indietro tra le due finestre con Cntrl-W. È possibile copiare da una finestra fare un CTRL-W e quindi incollare nell'altro. Mentre risolvi le differenze, le alte luci cambieranno e scompariranno.

vimdiff non è davvero uno strumento di unione. Mostra le differenze tra i file e l'unione viene eseguita manualmente.

Dai un'occhiata a questo video.

+0

C'è qualche trucco usando un terzo file? Significa, per più linee, ho bisogno di copiare e incollare più righe. – doptimusprime

+0

Puoi anche copiare e incollare più righe. Oppure usa i comandi diffput e diffget in VI. Semplicemente trovo più semplice copiare e incollare ciò di cui ho bisogno. –

9

Si può solo passare da una finestra e copiare e incollare per risolvere le differenze, come suggerisce @ David W. nella sua risposta, ma Vim ha dedicato :diffput e :diffget comandi per semplificare questo. Con questi (o i corrispondenti comandi della modalità normale do e dp), non è necessario passare da una finestra all'altra e il valore predefinito dell'intervallo viene modificato.

Se è necessario aggiungere invece di sovrascrittura con le differenze dell'altro tampone (che è un caso piuttosto insolito in un classico diff a due vie), si devono ancora Yank le linee originali e mettere loro dopo lo :diffget.

Dopo aver finito in un posto, è possibile utilizzare i comandi ]c, [c per passare alla differenza successiva.

+0

Grazie. Puoi pubblicare un esempio per il mio caso? Aiuterà anche gli altri a leggere questa domanda. Vorrei poter accettare due risposte. – doptimusprime

+1

Rileggendo la descrizione, si desidera aggiungere invece di sovrascrivere; è piuttosto inusuale. Ho esteso la mia risposta con maggiori dettagli. –

+0

A volte il risultato diff non viene aggiornato automaticamente. Dovresti includere ': diffupdate' nella tua spiegazione. – Vitor

53

È possibile utilizzare i seguenti comandi di base per unire:

do - Get passa da altra finestra nella finestra corrente.

dp - Inserire le modifiche dalla finestra corrente nell'altra finestra.

]c - Passare alla modifica successiva.

[c - Passare alla modifica precedente.

zo - aprire linee piegate.

zc - chiudere le linee piegate.

Ctrl + w, w - cambia finestra.

:only | wq - chiudere altre finestre, scrivere ed uscire.

Vedi i dettagli a: http://amjith.blogspot.com/2008/08/quick-and-dirty-vimdiff-tutorial.html

+0

': diffu [pdate]' aggiornerà le modifiche e le pieghe. vim si confonde facilmente durante la fusione. – pix

+0

questa dovrebbe essere la risposta! Grazie!! –