Neovim y Quickfix

Una de las útiles funciones que tiene vim, y ahora Neovim, es poder compilar tu proyecto usando el comando:

:make

Este comando ejecutará el fichero Makefile que se encuentre en la ruta en la que lanzaste Vim/Neovim. Por ejemplo, si has abierto la consola y has escrito:

$ cd proyectos
$ cd nuevo_proyecto
$ nvim hola.c

Desde Vim cuando ejecutes «:make» se buscará el fichero Makefile en «proyectos/nuevo_proyecto».

Si no sabéis lo que es un Makefile, en el siguiente enlace tenéis un tutorial:

https://makefiletutorial.com

La ventaja de usar «:make» es que si hay un error, lo mostrará y vim saltará a la línea que tiene el error. Un problema de este comportamiento es que cuando empiezas a editar, se quita la información del error. Quickfix soluciona este problema abriendo una ventana en Vim en la que se muestran los mensajes de error generados por «:make».

Para abrir Quickfix escribiremos:

:copen

Para cerrarla:

:cclose

Podemos acelerar el proceso añadiendo las siguientes líneas a nuestro archivo de configuración de Neovim:

vim.cmd([[ 
noremap <F3> :cclose<CR>
noremap <F5> :w<CR>:silent make<CR>:copen<CR>
]])

Al pulsar F5 se guardará el archivo que estemos editando, se compilará y se mostrará Quickfix. Con F3 se cerrará Quickfix.

Como se puede ver en la captura de pantalla, con un ejemplo de error, en la parte inferior aparece Quickfix con el error, en la parte superior vemos que el cursor ya está en la línea que genera el error:

Quickfix y Rust

Para que Quickfix reconozca los errores de compilación, tienen que tener el formato con el que el compilador gcc muestra dichos errores. El problema con Rust es que cambia ligeramente dicho formato, con lo que hay que hacer un cambio en el archivo Makefile para que lo muestre correctamente:

all:
cargo build 2> >(sed 's/-->//' 1>&2)

Simplemente está eliminando los signos «–>» que introduce el compilador de Rust en la salida para que Quickfix los pueda interpretar correctamente.

¿Cuándo usar Quickfix?

Si tenéis el LSP instalado y funcionando Quickfix no va a ser necesario pues el LSP ya hace su trabajo. Pero si no tenéis el LSP funcionando, como, por ejemplo, cuando quieres ahorrar energía en el portátil o directamente no quieres gastar tiempo configurando el LSP, usar Quickfix va a tener sus ventajas y va a ahorrar tiempo de desarrollo.

Espero que os sea útil.

Esta entrada fue publicada en Programación, Uncategorized. Guarda el enlace permanente.

Deja un comentario