Vim est un excellent éditeur de texte pour les systèmes Unix, mais il est notoire d’être difficile à quitter.
Ecrivez un programme complet qui sortira :q
pour sortir de Vim. Il doit alors lire une seule ligne d’entrée, puisqu’il recevra une invite bash, auquel cas la sortie a réussi, ou une erreur, auquel cas il ya des modifications non enregistrées.
L'invite de bash sera la suivante:
E37@vimmachine: /var/override)
Alors que l'erreur sera la suivante:
E37: No write since last change (add ! to override)
Après avoir reçu l'invite bash, le travail du programme est terminé et il ne devrait plus donner de sortie (sauf pour les espaces).
Dès que l'erreur est signalée, votre programme doit générer de manière aléatoire (c'est-à-dire que chaque possibilité a une probabilité non nulle d'être choisie) la :q!
sortie sans enregistrer ou la :x
sauvegarde et la sortie.
C'est du code-golf, donc le moins d'octets dans chaque langue gagne!
E37: No write since last change
? Comment un algorithme peut-il distinguer une invite d’un message d’erreur?
E37@vimmachine: /var/override)
:x
pour quitter vim. Un jour, vous frapperez accidentellement :X
puis des touches aléatoires lorsque vous serez confus. Une fois que :wq
vous aurez enfin vu votre dossier,
:x
c'était une chose! J'ai toujours utilisé:wq
:)