Diffondi due schede in Vim


121

Scenario: ho aperto Vim e ho incollato del testo. Apro una seconda scheda con :tabee incollo altro testo lì dentro.

Obiettivo: vorrei una terza scheda con un output equivalente a scrivere entrambi i testi su file e aprirli con vimdiff.

Il più vicino che posso trovare è "diff il buffer corrente rispetto a un file", ma non diffdue buffer aperti ma non salvati.


1
qual è il comando tabe?
hhafez

1
@hhafez - apri un nuovo buffer in una nuova scheda
Rook

3
È l'abbreviazione di: tabedit, aka: tabnew.
TSomKes

Risposte:


188

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 :vnewcomando divide verticalmente la vista corrente in modo da poter aprire lì il secondo file. Il comando :diffthis(o breve :difft:) viene quindi applicato a ciascuna vista.


1
Fwiw, MacVim non sembra averlo di default, ma penso che dovresti essere in grado di andare al terminale e digitare vimdiff file1.txt file2.txte metterti al tappeto.
ruffin

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

3
Questo è fantastico. Le edit fileNparti possono essere sostituite semplicemente incollando dal buffer, il che ti consente di diffondere due blocchi di testo senza incollarli ciascuno in un file tmp (qualcosa che la fusione ti consente di fare, ma gli strumenti di diff visiva sul Mac mancano). Ha funzionato in MacVim per me fuori dagli schemi.
yshavit

38

Suggerirei di provare : diffthis o : diffsplit


10
:vert diffsplitrende la visualizzazione delle differenze più tradizionale che senza:vert
effimero

7
È possibile: impostare diffopt + = vertical per rendere: vert il valore predefinito.
graywh

3
Inoltre, per scorrere due finestre contemporaneamente: :set scrollbindin entrambe.
Dmytro Sirenko

Non funziona se devo schede, come chiesto nella domanda. Se lo faccio :diffsplitottengo due buffer collegati.
erik

25

Quando hai due file aperti in divisione verticale, esegui

:windo diffthis


8
utilizzare :diffoffper disattivare la modalità diff
AB

2
Ma come si passa da due schede a una divisione verticale?
erik

1

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

:buffers

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

Apri il buffer all'interno della scheda corrente (ad es. Buffer numero 4)

:sb 4

Oppure fai per la visualizzazione verticale:

:vertical sb 4

Quindi puoi semplicemente diffondere il contenuto con

:windo diffthis

Se hai terminato l'analisi delle differenze puoi inserire:

:windo diffoff
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.