在 vim 中暂时禁用 BufWrite 脚本

Temporarily disable BufWrite script in vim

我已将 vim 设置为 运行 在我写入文件时自动格式化,但在对其进行编辑之前定期忘记将扩展名添加到我的黑名单。现在我无法保存编辑,因为自动格式化弄乱了缩进。有没有不用 运行 BufWrite 脚本保存的方法?

我的 vimrc 中的行是:

au BufWrite * if index(blacklist, &ft) < 0 | :Autoformat

共有三个选项:

:noa[utocmd] w[rite]

将在不触发 任何 自动命令的情况下执行保存。只要您没有使用 autocmds 的任何其他自定义/插件,就可以了。

:set eventignore=BufWrite | write | set eventignore=

将暂时关闭 BufWrite 事件。

或者,您也可以在 autocmd 周围添加一个条件:

au BufWrite * if ! exists('g:no_autoformat') && index(blacklist, &ft) < 0 | :Autoformat

这将使您能够通过 :let g:no_autoformat = 1.

有选择地仅禁用该特定的 autocmd

PS:您的 :autocmd 缺少结尾的 | endif