Sto utilizzando vim con il plug-in vim-golang. Questo plugin viene fornito con a function called :Fmt che "riformatta" il codice sorgente utilizzando gofmt, un eseguibile da riga di comando.vim - formattazione automatica del codice sorgente golang quando si salva
Desidero richiamare la funzione: Fmt ogni volta che salvi il file, quindi viene continuamente riformattato. Penso che questo dovrebbe essere fatto con una direttiva autocmd. Ma ho due dubbi:
- Non riesco a trovare un modo per eseguire la funzione. Ho provato a scrivere Fmt e: Fmt alla fine della riga autocmd, ma non sembra funzionare. Penso di perdere qualcosa, come "call".
- Voglio che questo accada solo quando si salva un file di tipo file 'vai'. Non so come combinare queste due condizioni: posso attivare variabili a seconda del tipo di file e posso fare piccole cose, come rimuovere gli spazi finali, ogni volta che un file viene salvato, ma separatamente.
Quindi questo è quello che ho finora:
" 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
Wow, risposta incredibilmente ampia, grazie mille! Ho finito per utilizzare la seconda opzione: non ho intenzione di resettare il tipo di file. Grazie! – kikito
Si potrebbe voler aggiungere 'silent' se è necessario un output normale dal comando' Fmt' (ho continuato a vedere 'righe X filtrate '): ' autocmd FileType go autocmd BufWritePre silent Fmt' –
djd
È già in 'vim -gocode' plugin https://github.com/Blackrush/vim-gocode/blob/master/ftplugin/go/fmt.vim#L20 –