No momento em que o Vim vê o status de saída do comando, o comando já enviou sua saída, se houver, para o terminal, assim você não pode suprimir condicionalmente a saída do comando testando o status de saída.
A página man do ruby (1) diz que -c
faz com que o ruby envie a mensagem "Syntax OK" para a saída padrão se não houver erros. Parece que os erros de sintaxe são reportados ao erro padrão. Portanto, você pode suprimir a mensagem "Sintaxe OK" redirecionando a saída padrão para / dev / null e suprimir o eco do comando usando :silent
, desta forma.
autocmd BufWritePost *.rb silent! !ruby -c <afile> > /dev/null