Cuando no quería ver la salida de los comandos externos llamados desde la línea de comandos de Vim, los anteponía con :silent
. Sin embargo, esto da como resultado una ventana de comando parpadeando momentáneamente en la pantalla cuando se ejecuta GVim en MS Windows. Después de un rato, me molestó este comportamiento, así que investigué soluciones alternativas (que es la forma en que encontré esta pregunta).
La mejor solución que se me ocurrió fue usar de Vim incorporado system
function que se ejecuta comandos shell sin abrir una ventana de comandos externa. Mientras que la salida del comando del shell no se imprime, su estado de salida está convenientemente disponible en v:shell_error
. También tiene la ventaja de que es portátil en todas las plataformas.
Ejemplo (echo
la declaración debe imprimir 0
si existe C:\Windows
):
call system("dir c:\windows")
echo v:shell_error
Esta es una buena respuesta (por lo que 1) que funciona desde una ventana de cmd. Sin embargo, 'start' parece ser un comando integrado de cmd.exe, lo que significa que no puedo usarlo sin iniciar primero un cmd.exe. Esto significa que no puedo usarlo desde dentro de Vim. – Szabolcs
¿Hm? :! start parece ser un comando vim. Por ejemplo, ':! Start/b cmd/c" explorer.exe "' abrirá una ventana del explorador sin crear una consola ni mostrarla. –
@AchalDave: No, start no es un comando vim allí. ':!' significa ejecutar el resto en un shell de comandos, por lo que solo está llamando al comando 'cmd.exe'' start' allí. – orev