Я использую vim с плагином vim-golang. Этот плагин имеет функцию под названием: Fmt, которая "переформатирует" исходный код, используя gofmt, исполняемый файл командной строки.
Я хочу вызывать функцию Fmt каждый раз, когда я сохраняю файл, поэтому он постоянно переформатируется. Я думаю, что это должно быть сделано с помощью autocmd. Но у меня есть два сомнения:
- Я не мог найти способ выполнить функцию. Я попытался направить Fmt и: Fmt в конце строки autocmd, но он, похоже, не работал. Я думаю, что я что-то пропустил, как "позвонить".
- Я хочу, чтобы это произошло только при сохранении файла filetype 'go'. Я не знаю, как объединить эти два условия - я могу активировать переменные в зависимости от типа файла, и я могу делать небольшие вещи, например, удаление конечных пробелов, когда файл сохраняется, но разделен.
Так вот что я до сих пор:
" 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