web-dev-qa-db-fra.com

Fusionner les modifications à l'aide de vimdiff

Dans mon cas, j'ai deux fichiers fichier1 et fichier2. À l'aide de vimdiff, je souhaite fusionner les modifications comme suit:

  1. Dans la première différence, placez la ligne de fichier1 au-dessus de la ligne de fichier2. Cela signifie une différence telle que Listing 2 dans fichier2 et List 2 devrait être List 2 suivi par Listing 2 dans le fichier fusionné.
  2. Inverser le cas dans un autre changement.

Un instantané est présenté ci-dessous.

enter image description here

Comment pouvons-nous réaliser cela avec vimdiff?

38
doptimusprime

Vous pouvez basculer entre les deux fenêtres avec Ctrlww. Vous pouvez copier à partir d’une fenêtre faire un Ctrlww, puis coller dans l'autre. Au fur et à mesure que vous résolvez les différends, les points forts vont changer et disparaître.

vimdiff n'est pas vraiment un outil de fusion. Il vous montre les différences entre les fichiers et vous effectuez la fusion manuellement.

Jetez un oeil à ceci vidéo .

19
David W.

Vous pouvez utiliser les commandes de base suivantes pour fusionner:

do - Obtenir les modifications d'une autre fenêtre dans la fenêtre en cours.

dp - Mettez les modifications de la fenêtre en cours dans l'autre fenêtre.

]c - Passer au prochain changement.

[c - Aller à la modification précédente.

zo - lignes pliées ouvertes.

zc - fermer les lignes pliées.

Ctrlww - changer de fenêtre.

:only | wq - quitte les autres fenêtres, écrit et quitte.

Voir plus de détails dans cet article .

97
F Yaqoob

Vous pouvez simplement basculer entre les fenêtres et copier/coller pour résoudre les différences, comme le suggère @ David David dans sa réponse, mais Vim a également dédié :diffput et :diffget commandes pour simplifier cela. Avec celles-ci (ou les commandes do et dp en mode normal correspondantes), vous n'avez pas à basculer entre les fenêtres et la plage correspond par défaut au changement en cours.

Si vous avez besoin de ajouter au lieu d'écraser avec les différences de l'autre tampon (ce qui est assez inhabituel dans un diff classique à deux voies), vous devez toujours tirer l'original. lignes et put après le :diffget.

Une fois que vous avez terminé au même endroit, vous pouvez utiliser le ]c, [c commandes pour passer à la différence suivante.

14
Ingo Karkat