Estoy usando vim con el complemento vim-golang. Este complemento viene con a function called :Fmt que "reformatea" el código fuente usando gofmt, un ejecutable de línea de comandos.vim - formato automático del código fuente de golang al guardar
Deseo invocar la función: Fmt cada vez que guardo el archivo, por lo que se vuelve a formatear continuamente. Creo que esto debería hacerse con una directiva autocmd. Pero tengo dos dudas:
- No he podido encontrar la manera de ejecutar la función. Intenté escribir Fmt y: Fmt al final de la línea autocmd, pero no pareció funcionar. Creo que extraño algo, como "llamar".
- Quiero que esto suceda solo al guardar un archivo de tipo de archivo 'ir'. No sé cómo combinar esas dos condiciones: puedo activar variables según el tipo de archivo, y puedo hacer cosas pequeñas, como eliminar espacios finales, cada vez que se guarda un archivo, pero por separado.
Así que esto es lo que tengo hasta ahora:
" I can set variables for go like this
autocmd FileType go setlocal noexpandtab shiftwidth=4 tabstop=4 softtabstop=4 nolist
" I can clean trailing spaces(conserving cursor position) on save like this
autocmd BufWritePre * kz|:%s/\s\+$//e|'z
" None of these worked:
autocmd BufWritePre,FileType go Fmt
autocmd BufWritePre,FileType go :Fmt
Guau, respuesta increíblemente extensa, ¡muchas gracias! Terminé usando la segunda opción: no tengo planeado restablecer el tipo de archivo. ¡Gracias! – kikito
Es posible que desee agregar 'silent' si necesita una salida normal del comando' Fmt' (Seguí viendo 'X lines filtered'): ' autocmd FileType vaya autocmd BufWritePre Silencio Fmt' –
djd
Ya está en 'vim -scripts de código de Google https://github.com/Blackrush/vim-gocode/blob/master/ftplugin/go/fmt.vim#L20 –