Vim在保存时调用命令

时间:2015-02-15 14:22:05

标签: vim

我想在保存

上调用this autoformatting插件

这是我的自动命令:

autocmd BufWrite *.css,*.html,*.js,*.py :Autoformat<CR>

当我保存没有任何反应时,如果我手动调用:Autoformat,则autoformatter会运行。

我做错了什么?

3 个答案:

答案 0 :(得分:4)

您已经找到了解决方案 - 这里有解释:

<CR>用于映射,其工作方式类似于记录的键入序列序列,因此您需要使用:启动命令行模式,并以{{结尾1}}。 autocmd采用 Ex命令,因此<CR>被视为(无效)参数。您也不需要<CR>,但这不会造成伤害。

:所示,这是:help BufWrite的同义词。

BufWritePre

所以,这是推荐的形式:

  BufWrite or BufWritePre     Before writing the whole buffer to a file.

答案 1 :(得分:1)

根据我的经验,您有时需要将其包围在augroup

augroup autoFormat
    autocmd BufWrite *.css,*.html,*.js,*.py :Autoformat<CR>
augroup END

我不知道为什么,但它对我有用!从技术上讲,autocmd应该单独工作,但有时它不会。此外,在GitHub页面上,它表示使用:Autoformat<CR><CR>,也许可以试试。

答案 2 :(得分:1)

出于某种原因,我不得不摆脱回车并更改为BufWritePre(尽管CR是主要问题,BufWritePre只是确保在写入缓冲区之前更改它而不是之后保存):

autocmd BufWritePre *.css,*.html,*.js,*.py :Autoformat

为什么,我不知道?