Как использовать при сохранении действия для типа файла в Vim?

3

Я использую vim-jsbeautify, и я думаю, что это здорово.

Однако я хотел бы добавить переформатирование в действии сохранения. На данный момент я должен нажать Ctrl- fкаждый раз, когда я хочу переформатировать. Я пытался

 autocmd FileType html AutoFormatBuffer :call HtmlBeautify()<cr>

но почему-то эта команда неверна, кто-то может уточнить?

Обновить

Так же, как упомянул Инго Каркат . Для этого случая создайте файл в

~/.vim/ftplugin/html/main.vim 

и добавьте строку в файл

autocmd BufWritePre <buffer> call HtmlBeautify()
А. Дюма
источник

Ответы:

4

Ваша команда ( call HtmlBeautify()) должна быть запущена перед сохранением. :help autocmd-eventsперечисляет все доступные; BufWritePreэто тот, который вы хотите. {cmd}Для :autocmdявляется команда Ex , так что вы можете опускать :(который переключается из нормального режима в режиме командной строки ), и должны опускать <CR>(это для отображения только):

autocmd BufWritePre <buffer> call HtmlBeautify()

Теперь вы хотите, чтобы этот триггер был установлен для каждого открытого HTML-файла. То , как вы пытались это с помощью другого :autocmdна FileTypeмероприятии:

autocmd FileType html autocmd BufWritePre <buffer> call HtmlBeautify()

Но вот для чего нужны плагины типов файлов :

Я бы порекомендовал помещать любые параметры, сопоставления и специфичные для типа файла autocmds (такие как этот) в ~/.vim/ftplugin/{filetype}_whatever.vim(или {filetype}/whatever.vim; cp. :help ftplugin-name) Вместо определения множества :autocmd FileType {filetype}; он чище и лучше масштабируется; требует от вас :filetype plugin on, хотя.

Инго Каркат
источник
спасибо, Инго. Ваш совет был очень хорошим, и мне также понравился ваш комментарий к лучшей практике.
А. Дюма