Vim è un ottimo editor di testo per sistemi unix, ma è noto per essere difficile da uscire.
Scrivi un programma completo che verrà emesso :qper uscire da Vim. Dovrebbe quindi leggere una singola riga di input, in quanto verrà visualizzato un prompt bash, nel qual caso l'uscita ha avuto esito positivo o un errore, nel qual caso ci sono modifiche non salvate.
Il prompt di bash sarà questo:
E37@vimmachine: /var/override)
Mentre l'errore sarà questo:
E37: No write since last change (add ! to override)
Dopo aver ricevuto il prompt di bash, il lavoro del programma è terminato e non dovrebbe fornire più output (ad eccezione degli spazi bianchi).
Dopo aver ricevuto l'errore, il tuo programma dovrebbe casualmente (cioè ogni possibilità ha una probabilità diversa da zero di essere scelto) :q!, per uscire senza salvare, o :x, per salvare ed uscire.
Si tratta di code-golf quindi vince il minor numero di byte in ogni lingua !
E37: No write since last change? Cioè, come può un algoritmo distinguere un prompt da un messaggio di errore?
E37@vimmachine: /var/override)
:xper uscire da vim. Un giorno colpirai accidentalmente i :Xtasti casuali quando sarai confuso. Dopo che finalmente :wqnon vedrai mai più il tuo file.
:xfosse una cosa! L'ho sempre usato:wq:)