6
votes

Comment abandonner Vimdiff entre consulter des fichiers?

dans mon fichier .SUBVersion / config fichier, j'ai défini diff-cmd en tant que script qui invoque vimdio pour afficher les modifications. < P> Voici mon problème: Je vis de difforme entre deux URL SVN, qui ont 10 fichiers modifiés. La commande SVN DIFF URL1 URL2 ouvrirait le diff du premier fichier. Délivrance: QA dans VIM montrerait le diff du deuxième fichier. Maintenant, existe-t-il un moyen de quitter Vim Vim, d'abandonner une visualisation ultérieure de diffs (autre que de courir: QA pour rester 8 fois)?

mise à jour: Voici mon script: xxx


0 commentaires

3 Réponses :


1
votes

Etant donné que Vim (DIFF) est invoqué séquentiellement avec des paires de fichiers (par subversion), l'état de sortie de VIM serait un bon moyen d'indiquer que tout le processus doit être abandonné. La commande : cquit sort avec un code d'erreur. Si l'exécutable environnant aborde déjà la boucle sur l'erreur, vous avez terminé. Sinon, cela devrait être modifié. Comme vous semblez avoir un script d'emballage supplémentaire autour de VIMDIFF , celui-ci ne doit pas avaler l'état de sortie de Vim (et on dirait que cela ne l'est pas).


6 commentaires

Je n'appellerai pas séquentiellement une paire de fichiers. J'ai collé mon script en question. Vim est invoqué une fois: Vimdiff -o


Oui, votre script est juste une enveloppe supplémentaire. Je voulais dire la logique à l'intérieur de la subversion; Espérons que c'est un script (ou un autre programme facilement modifiable) afin que vous puissiez l'adapter.


Avez-vous essayé si : cquit affecte la boucle? Et quiconque a baissé cette réponse, une critique ici dans les commentaires serait beaucoup plus utile.


J'ai essayé: cquit, cela n'aide pas. : CQUIT et: QA se comporte de la même manière.


Eh bien, vous devez simplement modifier le script de Subversion ou (nouvelle idée de hacky), vous devez vérifier l'état de sortie de Vim à l'intérieur de votre script, définissez un drapeau global (par exemple, un fichier de marqueur / TMP / VIMDIFFFSKIF) avec un horodatage, puis dans votre emballage sauter le L'invocation Vimdiff doit être définie et avoir un horodatage récent.


J'ai suscité et voulait noter que ce : cquit fonctionne pour moi lorsque Vimdio passe via de nombreux fichiers.



1
votes
  • Subversion's's DIFF-CMD traite toute valeur de retour différente de 0 ou 1 comme une erreur fatale. < / li>

  • Si vous fermez Vimdio avec : CQ , il quittera le code d'état 1 .

    Vous pouvez utiliser la valeur de retour de Vimdio dans votre script wrapper pour quitter avec une subversion "erreur fatale", telle que le renvoi 2 .

    Si vous ajoutez ce qui suit à la fin de votre script: xxx

    fais cela, si vous fermez Vimdio avec : cq , tout diffs restant ne sera pas affiché et la subversion montrera un Message d'erreur telle que: xxx


1 commentaires

: CQ Accepte un compte ou un argument Je pense lui dire quel code de sortie à utiliser.



1
votes

une solution de piratage: ctrl-z pour suspendre Vim, puis emplois et tuer% n où n est le travail pour le SVN DIFF Instance.

Pas la solution la plus propre, mais les autres n'ont pas fonctionné pour ma configuration SVN / VIMDIFF spécifique, et lorsque j'ai accidentellement modifié les fichiers, je préfère avoir un fichier de rechange .swp à nettoyer que l'entrée: QA 75 fois ! J'imagine que c'est un moyen infime de sortir quel que soit votre script diff.


0 commentaires