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

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

我在用vim-jsbeautify我认为这太棒了。

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

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

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

更新

就像@Ingo Karkat提到。在这种情况下,在

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

并将该行添加到文件中

autocmd BufWritePre <buffer> call HtmlBeautify()

答案1

call HtmlBeautify()您需要在保存之前触发命令 ( )。:help autocmd-events列出所有可用的;BufWritePre是您想要的。for{cmd}:autocmdEx 命令,这样你就可以删除:(从正常模式命令行模式),并且必须删除<CR>(这仅适用于映射):

autocmd BufWritePre <buffer> call HtmlBeautify()

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

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

但这就是文件类型插件用于

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

相关内容