Se référant à des tâches de nettoyage comme (mais sans s'y limiter) celles détaillées dans ces questions:
existe-t-il un moyen d'appliquer ces commandes uniquement aux lignes des fichiers qui ont été réellement modifiés? C'est pour garder la sortie diff concentrée sur le changement réel après avoir édité le code source (un réviseur de code potentiel ne serait pas dérouté par les changements impliqués dans le nettoyage du fichier entier), sans introduire de nouveaux problèmes de formatage.
:changes
ne fonctionne pas sans beaucoup de piratage; car il semble que ces informations soient stockées dans le fichier viminfo, et il n'y a aucun moyen de voir quelles modifications vous avez apportées cette session, et laquelle la précédente ... À moins que vous ne désactiviez le fichier viminfo bien sûr, mais c'est plutôt compliqué ... aimerait qu'on se trompe ici, cependant :-)Réponses:
Vous pouvez utiliser la commande
folddoopen
pour exécuter une commande uniquement sur les lignes qui ne se trouvent pas dans un pli fermé.Par exemple, vous pouvez supprimer des espaces à la fin des lignes avec la commande:
Pour appliquer cela uniquement aux lignes qui ne se trouvent actuellement pas dans un pli fermé, ajoutez
folddopen
comme ceci:folddoopen
peut également être abrégé enfoldd
.Si vous utilisez Vim comme outil de diff de votre contrôle source, vous pouvez l'utiliser pour appliquer des modifications uniquement aux lignes modifiées tout en affichant le diff.
Notez que par défaut, le mode diff de Vim affiche quelques lignes avant et après chaque section modifiée. Ainsi, afin de ne pas affecter les lignes qui sont immédiatement avant ou après les lignes modifiées dont vous aurez besoin à la première série
context
dansdiffopt
à0
par exemple:Pour les modifications manuelles, cette
foldopen
option peut également vous être utile. Il définit quels types de commandes entraîneront l'ouverture des plis. Notez cependant que cela n'empêche pas l' édition de se dérouler dans les plis comme le fait lafolddoopen
commande.(Si vous voulez dire autre chose par "les lignes des fichiers qui ont été réellement modifiés", alors vous allez devoir trouver un moyen de replier les lignes inchangées avant d'exécuter la commande: le plus simple est de garder une copie inchangée du fichier et utilisez vimdiff manuellement.)
la source
:folddoopen
, semble être une commande très utile. Je voulais également proposer que si vous utilisez fugitive.vim , vous pouvez plus facilement voir la différence de votre tampon actuel avec la:Gdiff
commande.:vsp new
, puis:read !git show HEAD~1:path
et enfin:windo diffthis
(et ensuite en utilisant votre solution).