web-dev-qa-db-fra.com

Prenez le diff de deux fenêtres ouvertes verticalement dans Vim

J'ai deux fichiers ouverts. Ils sont ouverts en mode vertical, à côté de. Puis-je diffuser instantanément ces deux fichiers sans quitter ou fermer Vim?

76
Fatih Arslan

Pour commencer la diffing sur toutes les fenêtres visibles:

:windo diffthis

qui exécute :diffthis sur chaque fenêtre.

Pour mettre fin au mode diff:

:diffoff!

(Le ! permet à diffoff de s’appliquer à toutes les fenêtres de l’onglet actuel. Ce serait bien si diffthis avait la même fonctionnalité, mais ce n’est pas le cas.)

115
Nefrubyr

dans chacune des fenêtres que vous voulez taper diff:

:diffthis

Si vous voulez afficher toutes les fenêtres ouvertes, vous pouvez faire:

:windo diffthis

(windo appliquera la commande à toutes les fenêtres ouvertes)

19
Nathan Fellman

Suite aux réponses précédentes, 

  • :windo difft (abréviation de diffthis) lancera le mode diff dans toutes les fenêtres ouvertes.
  • :windo diffo (abréviation de diffoff) arrêtera le mode Diff dans toutes les fenêtres ouvertes.

J'ai les mappages suivants dans ma vimrc pour le rendre plus facile:

command! Difft windo diffthis
command! Diffo windo diffoff
1
cxw

Suite aux réponses précédentes, j’ai adapté le mappage fourni par @cxw. Le mappage suivant ferme automatiquement NERDTree et diff les fenêtres ouvertes. Peu importe si NERDTree est proche, cela fonctionne de la même manière. Je le fais assez souvent, cela m'a donc fait gagner un peu de temps.

command! Difft NERDTreeClose | windo diffthis
0
Jordi Freixa