Deseo integrar el formateador de código fuente Uncrustify con Vim. Cualquiera de las dos opciones siguientes será suficiente.Vim autocmd (guardar archivo, ejecutar el formateador de código, volver a cargar el archivo)
- Formatee el código que estoy editando actualmente (es decir, cuando se presiona
gq
). - Formatee el código cuando guarde el archivo y luego vuelva a cargar el archivo formateado en la ventana actual de Vim.
Opción 1 es preferible. Intenté
set formatprg=uncrustify\ -c ~/misc/uncrustify.cfg --no-backup
i.e. Llamo Uncrustify con opciones de línea de comando. Esto no funciona. Vi da el error E518: Unknown option: ~/misc/uncrustify.cfg
.
Para la opción 2, He intentado lo siguiente en el archivo vimrc
autocmd bufwritepost *.cpp ! ~/bin/uncrustify -c ~/misc/uncrustify.cfg --no-backup <afile>
El archivo tiene el formato después de que el salvar, pero tengo que recargar manualmente el archivo en Vim.
Eso elimina el error VI. También tuve que agregar la opción -l para especificar el idioma como CPP, ya que la entrada a uncrustify es de stdin. Sin embargo, presionar gq en vi no formatea el archivo. Si lo presiono de nuevo, entonces la única línea actual se formatea y la siguiente línea se agrega al archivo que se está editando: "Análisis: 57 bytes (57 caracteres) desde stdin como idioma CPP". Creo que lo que me falta es cómo configurar el comando formatprg para leer todo el archivo y, en segundo lugar, evitar el resultado de la línea anterior al archivo que se está editando. – user1280213
@ user1280213 He actualizado la respuesta, espero que ayude – galymzhan
Gracias. Eso ayudó. – user1280213