Tengo esta línea en mi .vimrc
, que significa "cuando guarde un archivo .rb, ejecútelo ruby -c
" (la comprobación de errores del intérprete ruby).
autocmd BufWritePost *.rb !ruby -c <afile>
Cuando guardo ese archivo, siempre veo la salida en la parte inferior de la pantalla, así que me acostumbro y empiezo a ignorarlo. Lo que quiero es ver solo la salida si hay errores.
Puedo ver que cuando hay errores, después de decir lo que son, en la parte inferior dice "shell devuelto 1".
¿Cómo puedo modificar esta línea para que solo muestre un mensaje si el shell devuelve 1? ¿Hay alguna manera de suprimir condicionalmente la salida de un comando de shell ejecutado en vim?
syntax_checker
archivo. Por ejemplo, para la comprobación de Javascript necesita tener instalado JSLint (jsl
utilidad de línea de comandos): superuser.com/questions/247012/…Cuando Vim ve el estado de salida del comando, el comando ya ha enviado su salida, si la hay, al terminal, por lo que no puede suprimir condicionalmente la salida del comando al probar el estado de salida.
La página del comando man ruby (1) dice que
-c
causa que ruby envíe el mensaje "Sintaxis OK" a la salida estándar si no hay errores. De las pruebas parece que los errores de sintaxis se informan al error estándar. Por lo tanto, podría suprimir el mensaje "Sintaxis correcta" al redirigir la salida estándar a / dev / null y suprimir el eco del comando mediante el uso de:silent
este modo.fuente
"bar.rb" 1L, 10C writtenbar.rb:1: syntax error
y la pantalla no está sincronizada con el cursor.