utilisation vimdiff avec un fichier diff

Comment puis-je utiliser vimdiff pour visualiser les différences décrites dans un fichier diff?

39
demandé sur user14437 2008-10-28 12:27:25

4 réponses

au lieu d'utiliser la commande /usr/bin/vimdiff , essayez ceci:

$ vim file
:vertical diffpatch path/to/diff

( :vert diffpa pour faire court.)

Cela équivaut à appeler vimdiff sur le fichier original et le fichier corrigé par la suite, mais vim appelle patch sur un fichier temporaire pour vous.

Modifier

si vous voulez que le mode diff de vim soit entré automatiquement, utilisez ceci:

$ vim file +'vert diffpa path/to/diff'

+command demande vim pour exécuter"commande". ( +123 saute à la ligne 123, +/abc saute au premier match pour "abc", tout est documenté.)

en ce qui concerne la requête de Ken: si le fichier diff inclut des morceaux s'appliquant à des fichiers autres que le fichier que vous éditez actuellement, pas de soucis; vim appelle l'exécutable patch ci-dessous, qui va demander l'emplacement de ces fichiers mystérieusement manquants, et vous pouvez dire patch pour sauter ces hunks.

52
répondu ephemient 2008-10-29 18:42:40

venant de l'autre côté. J'ai écrit un plugin Vim qui montre les modifications qui ont été apportées à un fichier depuis la dernière sauvegarde au format vimdiff ou unified diff.

Obtenir ici: diffchanges.vim

3
répondu Jeremy Cantrell 2008-10-29 16:39:14

faire une copie du fichier original, appliquer la diff et puis

vimdiff original_file patched_file

vous pouvez aussi regarder vim.org les scripts qui ont été écrits pour traiter de la sortie svn diff. Si vous générez votre diff à partir d'un système de contrôle de version, jetez un oeil à la commande vcscommand.vim: CVS/SVN/SVK/git integration plugin .

2
répondu Ken 2008-10-28 09:52:52

pourriez-vous en dire plus sur les raisons pour lesquelles vous voulez utiliser vimdiff pour cela?

par exemple, voulez-vous visualiser les différences par caractère dans un fichier diff (unifié)? . Si c'est le cas, quelqu'un a répondu ma question à propos de la même avec une suggestion pour démarrer simplement emacs sur la diff et appuyer sur ALT-n pour parcourir les morceaux, en mettant bien en évidence les changements par mot ou par caractère en cours de route. (similaire à vimdiff). Ça marche bien, mais c'est dommage d'allumer emacs juste pour faire ça. Je connais assez d'emacs pour faire ça, puis sortir sans salir le patch. :)

quoi qu'il en soit, la réponse d'emacs m'a donné quelques idées. Je suis sûr que Vim peut être amené à fournir une meilleure mise en évidence pour les fichiers diff, peut-être quelque chose comme ediff. J'ai regardé cela il y a quelques temps, et quelqu'un sur la liste des utilisateurs de vim a eu l'excellente suggestion d'incorporer google-diff-match-patch . L'interface Python peut être utilisée à partir d'un vim ftplugin Python, par exemple.

Désolé pour tout à l'aide d'une "réponse" pour répondre quand cela peut ne pas être une grande réponse, le formatage "ajouter un commentaire" était trop limité pour ce que je voulais dire.

Pour la postérité, voici une référence à une autre question similaire (qui a déjà des liens ici).

1
répondu Adam Monsen 2017-05-23 10:30:44