2009-03-20 11 views
34

Utilizo gVim en Windows para editar mi código (principalmente C++). Yo uso: make in gVim para compilar el proyecto, pero esta es una operación de bloqueo, que me impide usar gVim hasta que se complete la compilación. ¿Cómo puedo hacer: realizar de forma asíncrona y aún obtener los beneficios de volver a leer los errores en Vim y saltar a los errores en el código fuente? Puntos de bonificación si puedo ver el proceso de creación en tiempo real. En este momento the: make redirige la salida a un archivo, por lo tanto, no puedo ver el progreso de make.En ejecución: make from gVim en Background

+0

hizo u encontrar una buena solución para este –

+0

@pydave creado un plugin llamado AsyncCommand que logra la mayoría de los elementos enumerados en la pregunta, excepto ver el proceso de fabricación en acción. – Amjith

Respuesta

18

Lo que hago es

:!gvim -c 'MyMake' 

(donde MyMake es el comando personalizado que puede cambiar a dir caso, formular y Copen 20.)

y estoy haciendo mi trabajo, mientras que la acumulación va en la otra ventana.

Otra opción:
puede redirigir progresar a algún archivo de la cáscara o dentro de vim (: hacer &). Y luego mediante el uso de

:cfile make_result_file 

:cw 
or 
:copen 20 

lograr el mismo resultado que el que tendría que utilizar: hacer

+0

¿Podría detallar su comando MyMake? Intento hacer algo similar con gvim en Windows y msbuild (es decir, abrir gvim window, make y open output externos) pero no puedo obtener el comando correcto. – rem45acp

1

me gustaría utilizar métodos incorporados de su sistema operativo para ejecutar tareas en segundo plano.

en Windows, intente escribir

:!start make 

en Linux/Mac OS X, tratar

:!make > /dev/null 2>&1 & 
+3

:! Start make funciona bien si solo intenta generar un proceso de make. Estoy buscando utilizar la característica de compilación de gvim donde lee los errores en vim y puede saltar al error en el código fuente haciendo doble clic en él. – Amjith

5

Trate de usar

:!start make 

(más información en ": ayudar a comenzar!") - de esa forma, vim no tiene que esperar a que el proceso comience a finalizar; puede continuar con su edición).

+5

:! Start make funciona bien si solo intenta generar un proceso make. Estoy buscando utilizar la característica de compilación de gvim donde lee los errores en vim y puede saltar al error en el código fuente haciendo doble clic en él. – Amjith

1

No podrá ver el progreso de make (dentro de Vim) a menos que instale una versión muy reciente de Vim (v7.4 y muchos parches, o simplemente Vim 8). Ahora hay algunos complementos que se han aprovechado de eso. Mi BuildToolsWrapper es uno de ellos. Lo he probado con éxito en Linux y en Windows.

Antes de eso necesitábamos otros trucos. Recuerdo el plugin de Marc Weber que fue capaz de emular la compilación de fondo en Windows. Hubo algunos otros. Dejo que otros los incluyan.

7

Eche un vistazo a mi AsyncCommand plugin. Simplemente envuelve la sintaxis vim requerida para ejecutar algo y cargarlo con --remote. Cargué AsyncCommand 2.0 que incluye un comando AsyncMake.

Agregue la secuencia de comandos a su .vim/plugin y puede compilar con :AsyncMake o :AsyncMake target. Los errores se abrirán en su quickfix una vez que la marca finalice.


En respuesta a las observaciones de código más legible:

Para ver los resultados se basan en Windows, si tiene cygwin/unxutils/algo con tail en su camino, a continuación, en asynccommand.vim, cambiar

call <SID>Async_Impl(tool_cmd, vim_cmd) 

a

call <SID>Async_Impl(tool_cmd, vim_cmd) 
call <SID>Async_Impl("tail -f ". temp_file, "") 

Eso debería cambiar todos los comandos de Async para abrir una segunda ventana de comando con la salida.

+0

Hola, gracias por crear ese complemento. ¿Hay alguna manera de ver el proceso de hacer en acción? Estoy usando Win XP y la ventana de comandos está en blanco hasta que se completa el proceso de creación y luego se abre la ventana de revisión. – Amjith

+0

Olvidé que la ventana de comandos no muestra nada. He modificado la respuesta para dar una posible solución. – idbrii

+0

Agregué las líneas que mencioné anteriormente, pero todavía tengo una ventana de comando en blanco. Estoy en Windows XP y tengo cola en mi camino. Incluso incluí la ruta completa al comando tail. – Amjith

-1
+0

Ese script no se puede usar en Windows. – vexe

+0

Si bien esto podría responder teóricamente a la pregunta, [sería preferible] (// meta.stackoverflow.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace de referencia. –