vim - автоматическое форматирование исходного кода golang при сохранении

Я использую vim с плагином vim-golang. Этот плагин поставляется с функцией под названием :Fmt, которая «переформатирует» исходный код с помощью gofmt, исполняемого файла командной строки.

Я хочу вызывать функцию :Fmt каждый раз, когда я сохраняю файл, чтобы он постоянно переформатировался. Я думаю, что это должно быть сделано с помощью директивы autocmd. Но у меня есть два сомнения:

  1. Я не смог найти способ выполнить функцию. Я попытался написать Fmt и :Fmt в конце строки autocmd, но это, похоже, не сработало. Я думаю, что я скучаю по чему-то, например, по «звонку».
  2. Я хочу, чтобы это происходило только при сохранении файла типа '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

25
задан kikito 10 June 2012 в 14:12
поделиться