![如何在 vim 中使用文件类型的保存操作?](https://linux22.com/image/1546236/%E5%A6%82%E4%BD%95%E5%9C%A8%20vim%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B%E7%9A%84%E4%BF%9D%E5%AD%98%E6%93%8D%E4%BD%9C%EF%BC%9F.png)
我在用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}
是:autocmd
Ex 命令,这样你就可以删除:
(从正常模式到命令行模式),并且必须删除<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
。