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 :qpour 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 :xsauvegarde 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)
                :xpour quitter vim. Un jour, vous frapperez accidentellement :Xpuis des touches aléatoires lorsque vous serez confus. Une fois que :wqvous aurez enfin vu votre dossier,
                
:xc'était une chose! J'ai toujours utilisé:wq:)