如何在vim中对文件类型使用保存操作?

A.D*_*mas 5 vim

我正在使用vim-jsbeautify,我认为它很棒。

但是我想在保存操作中添加重新格式化。目前我必须按Ctrl-f每次我想重新格式化。我试过

 autocmd FileType html AutoFormatBuffer :call HtmlBeautify()<cr>
Run Code Online (Sandbox Code Playgroud)

但不知何故该命令是错误的,有人可以澄清一下吗?

更新

正如@Ingo Karkat提到的那样。对于这种情况,在

~/.vim/ftplugin/html/main.vim 
Run Code Online (Sandbox Code Playgroud)

并将该行添加到文件中

autocmd BufWritePre <buffer> call HtmlBeautify()
Run Code Online (Sandbox Code Playgroud)

Ing*_*kat 6

您的命令 ( call HtmlBeautify()) 需要在保存前触发。:help autocmd-events列出所有可用的;BufWritePre是你想要的。所述{cmd}用于:autocmdEx命令,所以可以删除:(即从交换机正常模式命令行模式),并且必须丢弃<CR>(这是唯一的映射):

autocmd BufWritePre <buffer> call HtmlBeautify()
Run Code Online (Sandbox Code Playgroud)

现在,您希望为每个打开的 HTML 文件安装该触发器。您尝试这样做的方法是:autocmdFileType事件中使用另一个:

autocmd FileType html autocmd BufWritePre <buffer> call HtmlBeautify()
Run Code Online (Sandbox Code Playgroud)

但这就是文件类型插件的用途

我建议将任何设置、映射和特定于文件类型的自动命令(例如这个)放入~/.vim/ftplugin/{filetype}_whatever.vim(或{filetype}/whatever.vim; cp. :help ftplugin-name) 中,而不是定义很多:autocmd FileType {filetype}; 它更干净,扩展性更好;但是,要求您拥有:filetype plugin on