O Vim é um ótimo editor de texto para sistemas unix, mas é notório por ser difícil sair.
Escreva um programa completo que será exibido :q
para sair do Vim. Ele deve ler uma única linha de entrada, pois receberá um prompt do bash; nesse caso, a saída foi bem-sucedida ou um erro; nesse caso, há alterações não salvas.
O prompt do bash será este:
E37@vimmachine: /var/override)
Enquanto o erro será este:
E37: No write since last change (add ! to override)
Ao receber o prompt do bash, o trabalho do programa é concluído e não deve fornecer mais saída (exceto espaços em branco).
Após receber o erro, seu programa deve aleatoriamente (ou seja, cada possibilidade tem uma probabilidade diferente de zero de ser escolhido) sair :q!
, para sair sem salvar, ou :x
para salvar e sair.
Isso é código-golfe, e o menor número de bytes em cada idioma vence!
E37: No write since last change
? Ou seja, como um algoritmo pode distinguir um prompt de uma mensagem de erro?
E37@vimmachine: /var/override)
:x
para sair do vim. Algum dia você acidentalmente pressionará :X
teclas aleatórias quando estiver confuso. Depois de finalmente, :wq
você nunca mais verá seu arquivo.
:x
era uma coisa! Eu sempre usei:wq
:)