我有一个函数可以对当前文件执行有效性检查(以符合我的雇主的编码标准)。我想在保存之前调用这个函数,即使用BufWritePre。但是,如果我的检查功能失败,我会防止保存文件。在BufWritePre期间防止文件保存
那么,是否有可能突破BufWritePre自动命令?
我意识到我可以通过重新映射:write
命令来完成此操作,如图所示here,但是我想尽可能避免这种情况,因为它感觉有点不太巧妙。
在此先感谢您的建议。
我有一个函数可以对当前文件执行有效性检查(以符合我的雇主的编码标准)。我想在保存之前调用这个函数,即使用BufWritePre。但是,如果我的检查功能失败,我会防止保存文件。在BufWritePre期间防止文件保存
那么,是否有可能突破BufWritePre自动命令?
我意识到我可以通过重新映射:write
命令来完成此操作,如图所示here,但是我想尽可能避免这种情况,因为它感觉有点不太巧妙。
在此先感谢您的建议。
你可以“简单”强制错误:
:autocmd BufWritePre *.txt throw "you may not"
如果您希望能够保存.txt文件再次
:autocmd!
:source $MYVIMRC
从: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
子句中,以确保它即使在写入出现问题时也能执行。
又见问题“[防止保存文件与Vim中的某些名称](http://stackoverflow.com/q/6210946/254635)“。 – 2012-07-29 04:11:24