dans mon fichier mise à jour:
Voici mon script: p> .SUBVersion / config code> fichier, j'ai défini
diff-cmd code> en tant que script qui invoque
vimdio code> 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 code> 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)? p>
3 Réponses :
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 code> 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 code>, celui-ci ne doit pas avaler l'état de sortie de Vim (et on dirait que cela ne l'est pas). P>
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 code> 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 code> fonctionne pour moi lorsque Vimdio passe via de nombreux fichiers.
Subversion's's Si vous fermez Vimdio avec Vous pouvez utiliser la valeur de retour de Vimdio dans votre script wrapper pour quitter avec une subversion "erreur fatale", telle que le renvoi Si vous ajoutez ce qui suit à la fin de votre script: p> fais cela, si vous fermez Vimdio avec DIFF-CMD CODE> traite toute valeur de retour différente de
0 code> ou
1 code> comme une erreur fatale. P> < / li>
: CQ code>, il quittera le code d'état
1 code>. p> li>
2 code>. p>
: cq code>, tout diffs restant ne sera pas affiché et la subversion montrera un Message d'erreur telle que: p>
: CQ CODE> Accepte un compte ou un argument Je pense lui dire quel code de sortie à utiliser.
une solution de piratage: 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. P> ctrl-z code> pour suspendre Vim, puis
emplois code> et
tuer% n code> où n est le travail pour le SVN DIFF Instance. P>