Diff deux onglets dans Vim

121

Scénario: j'ai ouvert Vim et collé du texte. J'ouvre un deuxième onglet avec:tabe et colle un autre texte.

Objectif: je voudrais un troisième onglet avec un résultat équivalent à écrire les deux textes dans des fichiers et à les ouvrir avec vimdiff.

Le plus proche que je puisse trouver est "comparer le tampon actuel à un fichier", mais pas diffdeux tampons ouverts mais non enregistrés.

Davetapley
la source
1
quelle est la commande tabe?
hhafez
1
@hhafez - ouvrir un nouveau tampon dans un nouvel onglet
Rook
3
C'est l'abréviation de: tabedit, alias: tabnew.
TSomKes

Réponses:

188

Je suggère d'ouvrir le deuxième fichier dans le même onglet au lieu d'un nouveau.

Voici ce que je fais habituellement:

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

La :vnewcommande divise la vue actuelle verticalement afin que vous puissiez y ouvrir le deuxième fichier. La commande :diffthis(ou courte :difft:) est ensuite appliquée à chaque vue.

Jan
la source
1
Fwiw, MacVim ne semble pas avoir cela par défaut, mais je pense que vous devriez pouvoir aller au terminal et taper vimdiff file1.txt file2.txtet vous assommer.
ruffin
11
Tu viens de m'epater. Ma vie ne sera plus jamais la même après :diffthis. Merci beaucoup. Je vous remercie!
Justin Force
3
C'est génial. Les edit fileNparties peuvent être remplacées par un simple collage à partir du tampon, ce qui vous permet de diffuser deux morceaux de texte sans les coller chacun dans un fichier tmp (ce que vous permet de fusionner, mais les outils de comparaison visuelle sur Mac manquent). Cela a fonctionné dans MacVim pour moi hors de la boîte.
yshavit
38

Je suggérerais d'essayer : diffthis ou : diffsplit

joeslice
la source
10
:vert diffsplitdonne une vue différentielle plus traditionnelle que sans:vert
éphémère
7
Vous pouvez: définir diffopt + = vertical pour faire de: vert la valeur par défaut.
graywh
3
Aussi, pour faire défiler deux fenêtres simultanément: :set scrollbinddans les deux.
Dmytro Sirenko
Ne fonctionne pas si je dois des onglets, comme demandé dans la question. Si je le fais, :diffsplitj'obtiens deux tampons connectés.
erik
25

Lorsque vous avez deux fichiers ouverts en fractionnement vertical, exécutez

:windo diffthis

UN B
la source
8
utiliser :diffoffpour désactiver le mode diff
AB
2
Mais comment passer de deux onglets à une division verticale?
erik
1

Le contenu de tous les onglets se trouve à l'intérieur des tampons. Regardez les tampons:

:buffers

Trouvez le bon numéro pour le contenu qui doit être différent du contenu de votre onglet actuel.

Ouvrez le tampon dans votre onglet actuel (par exemple le tampon numéro 4)

:sb 4

Ou faites pour une vue verticale:

:vertical sb 4

Ensuite, vous pouvez simplement comparer le contenu avec

:windo diffthis

Si vous avez terminé l'analyse des différences, vous pouvez saisir:

:windo diffoff
casser
la source