J'utilise vim comme principal éditeur.
Je voudrais aussi utiliser vim pour diff fichiers et modifier les fichiers tout en faisant le diff pour corriger les changements faciles (plutôt que la plupart des techniques diff qui sont un cycle de diff / fix / diff / fix).
En outre, il existe des moyens simples d'intégrer vim aux outils de diff utilisés par les outils / sites de contrôle de code source (je pense particulièrement à git, mais je suis sûr que d'autres personnes seraient intéressées par l'intégration à d'autres outils / sites de contrôle de code source).
:Gdiff
et les:Gvdiff
deux commandes vous permettent de voir le diff côte à côte du tampon actuel si votre tampon actuel est géré par git. Il vous aide également à résoudre les conflits dans une disposition à trois fenêtres lorsque des conflits de fusion sevd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }
et je l'invoque avecvd file1 file2
. Il utilisediff
pour déterminer si les fichiers diffèrent et ne s'ouvrevimdiff
que si c'est le cas. Sinon, je reste dans la coquille. Je désactive également la coloration syntaxique dans Vim car je trouve cela distrayant de différer. Ne fonctionne qu'avec deux fichiers.Réponses:
vim a cette fonctionnalité intégrée (avec le bon indicateur de ligne de commande).
Cela ouvre chaque fichier dans une vue et met en évidence les différences.
Tout code identique est
folded
absent, vous n’avez donc pas besoin de regarder un code identique ou de faire défiler de gros morceaux de code identique.Mais il existe également une application wrapper
vimdiff
qui appelle correctement vim avec les indicateurs corrects.Si vous utilisez git, vous pouvez configurer un outil de différenciation externe. Il est donc facile de configurer vimdiff pour qu’il soit l’outil de diff de git.
Lorsque vous utilisez vimdiff, vous pouvez modifier l’un ou l’autre des côtés et la surbrillance des différences suit le rythme pour montrer les différences.
Remarque: lors de l'édition à partir d'un diff git. Si vous essayez d’éditer la version stockée du fichier dans le référentiel, vos modifications seront ignorées lorsque vous quitterez (git ne vous fait pas confiance avec l’original, ce qui vous différencie d’une copie tmp), mais vous pouvez éditer la copie locale vers votre contenu et votre contenu. enregistrez-le sur votre version actuelle.
Quelques commandes de base utiles dans
vimdiff
Autres paramètres vim que j'utilise pour surligner avec vimdiff
Cela désactive la mise en évidence des bits de code modifiés. Ainsi, la ligne modifiée est mise en surbrillance afin que je puisse repérer les modifications, mais le texte réellement modifié se distingue de la ligne (car il n'est pas mis en surbrillance).
la source
:diffthis
commande pour lancer un diff lorsque Vim est déjà en cours d'exécution.git config --global diff.tool vimdiff
,git diff
montre toujours tout comme si je ne change rien.git difftool
Si vous modifiez un fichier ouvert et souhaitez le comparer à un autre fichier sans fermer le fichier actuel:
Ouvrez le nouveau fichier en écran partagé:
Pour la scission verticale:
ou scission horizontale:
Basculez les curseurs sur différents écrans partagés:
Invoquer "mode diff" dans le fichier:
Basculez vers un autre fichier et appelez le "mode diff":
Pour désactiver le "mode Diff":
la source
:windo diffthis
aussi utiliserVous pouvez placer ci-dessous le paramètre mentionné dans le
.gitconfig
fichier situé dans le répertoire%homepath%
(ou%userprofile%
) de l'utilisateur actuellement connecté:Cela permettra à l'outil git bash de commencer à utiliser vimdiff comme outil de diff externe également.
la source
Voici ma config git:
https://github.com/tracyone/dotfiles/blob/master/.gitconfig
la source
Je ne vois que trois situations pour utiliser vim en tant que difftool. Ils sont brièvement décrits ci-dessous:
Pour git difftool, mettez ce qui suit dans votre
~/.gitconfig
:Pour ouvrir vim en tant qu'outil de différenciation pour deux fichiers, vous pouvez procéder comme suit:
Pour obtenir une vue diff des tampons actuellement actifs, c'est-à-dire tous les tampons auxquels une fenêtre leur a été affectée dans la page à onglet actuellement active, vous pouvez procéder comme suit:
Pour plus d'informations, voir
:h diff
la source
voici ce que je fais:
:vnew
(pour avoir les deux fenêtres côte à côte) ou:new
(pour avoir les fenêtres en haut et en bas). si vous avez un fichier spécifique à ouvrir dans la deuxième fenêtre, vous pouvez inclure le chemin comme ceci::vnew /path/to/secondfile.txt
voici la fonction personnalisée qui est dans mon
~/.vimrc
:la source
:diffthis
etdiffoff!
que vous ne devez pas définir toutes les options diff vous (par exemple cursorbind est également fixé par diffmode)