我有一个功能,可以对当前文件执行有效性检查(以符合我雇主的编码标准)。我想在保存之前调用此函数,即使用BufWritePre。但是,如果文件检查功能失败,我会阻止保存文件。
那么,是否有可能打破BufWritePre自动命令?
我意识到我可以通过重新映射:write
命令here来完成此任务,但我想尽可能避免这种情况,因为它感觉有些不太微妙。< / p>
提前感谢您的建议。
答案 0 :(得分:4)
您可以“简单地”强制执行错误:
:autocmd BufWritePre *.txt throw "you may not"
如果您希望能够再次保存.txt文件
:autocmd!
:source $MYVIMRC
答案 1 :(得分:1)
来自:help BufWriteCmd
*BufWriteCmd*
BufWriteCmd Before writing the whole buffer to a file.
Should do the writing of the file and reset
'modified' if successful, unless '+' is in
'cpo' and writing to another file |cpo-+|.
The buffer contents should not be changed.
|Cmd-event|
所以听起来你可以实现那个自动命令,只有在允许保存时才进行保存并重置'modified'
。
我猜你必须使用像writefile(getline('^', '$'))
这样的东西来实际写作。
另一方面,您可以做类似
的事情:write
该文件。我不确定它是否允许你在BufWriteCmd处理程序中执行此操作。:finally
子句中,以确保即使写入有问题也能执行。