Compilando código de vim


18

Nuevo en vimyy quiero poder compilar código desde dentro vimsin ejecutar un nuevo terminal y llamar al compilador.

¿Cómo voy a hacer esto? Tenga en cuenta que este requisito no se limita gccsolo a, a veces necesito llamar pythontambién al script actual en el que estoy trabajando, por lo que tiene la idea ...

Respuestas:


25

Escribe un Makefile, entonces puedes simplemente:

:make

desde adentro vim. Y si la compilación falla:

:copen

le mostrará advertencias y errores. Seleccionarlos lo llevará al archivo y la línea apropiados.



6

Si por algún motivo no le gustan los makefiles, puede llamar a cualquier comando con:!

Por ejemplo, puede usar ":! Javac * .java && java Foo" para compilar y ejecutar un programa java simple. También puede llamar a otros sistemas de compilación (scons, cmake, ...) de esta manera.


3

Pruebe el complemento de ejecución rápida para Vim. La página incluye un enlace a github, que es la última versión y que es lo que uso.

La ventaja de usar este complemento en lugar de hacerlo :!, la salida del comando se recopilará y se mostrará en una ventana dividida.

Además, de forma predeterminada, ese complemento colgará su instancia de vim cuando le solicite que ejecute un comando, pero se puede configurar para ejecutar el comando de forma asincrónica, que es lo que hago. Lea la documentación para más detalles.


3

Utilizo un vim que tiene compilado el intérprete de Python.

Origen un archivo de Python que tiene esta función:

def pyterm(filename="", interactive=1):
    cmd = "%s %s %s " % (PYTHON, "-i" if interactive else "", filename)
    if "DISPLAY" in os.environ:
        return run_config(os.environ.get("XTERM"), cmd)
    else:
        return os.system(cmd)

Y asignarlo a un atajo de teclado:

nmap ;ru :update<CR>:python pyterm(vim.current.buffer.name, 0)<CR>
nmap ;ri :update<CR>:python pyterm(vim.current.buffer.name, 1)<CR>

Anteriormente había configurado algunas variables de entorno para determinar el terminal exacto en el que se ejecutaría si usaba gvim, o en el mismo terminal si no en una X.

Luego, generalmente solo escribo '; ri' en un búfer de Python para ejecutarlo (generalmente para probarlo).


2

Vim se puede usar para compilar usando gnu make en el archivo actual, incluso si no hay un Makefile para el archivo (para más detalles ver aquí ):

:make %:r

De esta forma, vim le proporciona acceso a los comentarios de error de corrección rápida de la :help quickfixlista del compilador ( ): :cnSiguiente error, :cpError anterior, :cwErrores de listado de nueva ventana.

Si no tiene gnu make, puede configurar la variable makeprg (cambie a g ++ si está compilando C ++):

:se makeprg=gcc\ -o\ %<\ %

y luego use el comando vim make para compilar el archivo actual y obtener una lista rápida de errores en vim:

:make

EDITAR: si también desea ejecutar el ejecutable compilado desde vim, puede hacerlo ('!' Se ejecuta, '%: r' es el nombre del archivo sin su sufijo):

:!./%:r

1

En el caso de gcc, python, etc., puede llamarlo con dos puntos (:!)

P.ej. :!python something.py


0
!gcc file.c && ./a.out

Esto compilará su archivo C y ejecutará el ejecutable pidiendo la entrada todo dentro de su ventana vim.


1
Una respuesta más completa incluiría ':', y para hacerlo más versátil, podría cambiar 'file.c' para el operador de archivo actual '%'::!gcc % && ./a.out
Pierz

Estoy haciendo algo similar en mi .vimrc, me mapeo Command + Shift + Ra:map <D-R> :exe '!gcc %:p' <bar> exe '!'.getcwd().'/a.out'<cr>
f1lt3r

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.