Isso é feito intencionalmente no vim:
- as chamadas de comando
":wq",ex_exit, - que chama
getoutcom um código de saída nominal0, - em
getout, ele verifica se há um erro na modo, comentando
/* When running in Ex mode an error causes us to exit with a non-zero exit
* code. POSIX requires this, although it's not 100% clear from the
* standard. */
if (exmode_active)
exitval += ex_exitval;
- a variável
ex_exitvalé definida pela mensagem de erro ememsg:
called_emsg = TRUE;
if (emsg_silent == 0)
ex_exitval = 1;
- e
ex_exitvalsão nunca limpos.
Portanto, "qualquer" mensagem de erro no modo ex (os comandos : ) produzirá este resultado. Uma verificação rápida mostra que o vi-mode ZZ também é afetado por mensagens de erro ex-mode.