2011-06-27 12 views

Respuesta

5

¿Usted intentó shell.vim?

Los Xolox # shell # Ejecutar() Función de

Esta función permite que otros Vim plug-ins para ejecutar comandos externos en el fondo (es decir de forma asíncrona) sin necesidad de abrir un símbolo del comando ventana en Windows.

5

Pruebe start /B <program name> para iniciar el programa sin una nueva ventana.

+1

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

+0

¿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. –

+0

@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

0

Se podría tal vez utilizar una secuencia de comandos autohotkey de este tipo:

Loop { 
    WinWait, my command window title 
    WinHide 
} 
1

no puedo creer que nadie ha sugerido el simple uso de : silencio

por ejemplo, Tengo el siguiente en mi .vimrc (gvim en Win7)

"open windows explorer to the directory of the current file 
:map <leader>ex :silent !Explorer %:p:h<CR> 
+0

No estoy en Windows en este momento, pero ¿esto no solo suprime los mensajes * dentro de * Vim? Lo que necesitaba era suprimir la ventana negra del Símbolo del sistema que aparecía cada vez. – Szabolcs

+0

copié esa línea de mi .vimrc, me funciona bien. sin él, necesito presionar Enter dos veces después de ejecutar! explorer - una vez para descartar la ventana de cmd que aparece, y nuevamente en gvim en la barra de comandos en la parte inferior. – ash

+0

La pregunta no era sobre presionar enter. Se trataba de suprimir la ventana por completo. No quería que una ventana parpadeara cada vez que se ejecutaba una determinada acción. – Szabolcs

2

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 
+1

La función 'system' es excelente cuando se quiere que no haya una ventana de comando externa. – zhenguoli

Cuestiones relacionadas