Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 在BufWritePre期间防止文件保存_Vim - Fatal编程技术网

Vim 在BufWritePre期间防止文件保存

Vim 在BufWritePre期间防止文件保存,vim,Vim,我有一个功能,对当前文件进行有效性检查,以符合我雇主的编码标准。我想在保存之前调用此函数,即使用BufWritePre。但是,如果我的检查功能失败,我会阻止保存该文件 那么,有可能突破BufWritePre自动命令吗 我意识到我可以通过重新映射:write命令来实现这一点,如图所示,但如果可能的话,我想避免这样做,因为这感觉有点不微妙 提前感谢您的建议。发件人:help BufWriteCmd 因此,听起来您可以实现该自动命令,并且只有在允许保存的情况下才能执行保存和重置“修改” 我猜您必须使用

我有一个功能,对当前文件进行有效性检查,以符合我雇主的编码标准。我想在保存之前调用此函数,即使用BufWritePre。但是,如果我的检查功能失败,我会阻止保存该文件

那么,有可能突破BufWritePre自动命令吗

我意识到我可以通过重新映射:write命令来实现这一点,如图所示,但如果可能的话,我想避免这样做,因为这感觉有点不微妙

提前感谢您的建议。

发件人:help BufWriteCmd

因此,听起来您可以实现该自动命令,并且只有在允许保存的情况下才能执行保存和重置“修改”

我猜您必须使用类似WriteFileLine“^”和“$”的东西来实际编写

另一方面,您可能可以执行以下操作

禁用BufWriteCmd自动命令 :再次写入文件。我不确定它是否允许您在BufWriteCmd处理程序中执行此操作。 重新启用BufWriteCmd自动命令。您可能应该将其放在:finally子句中,以确保即使写操作出现问题,它也能执行。
您可以“简单地”强制执行错误:

:autocmd BufWritePre *.txt throw "you may not"
如果您想再次保存.txt文件

:autocmd!
:source $MYVIMRC

这比我炮制的要简单得多。我猜是用:w!将强制通过此错误吗?不,w!无论如何都不写谢谢!这看起来很有希望。但是,检测到的错误消息看起来非常难看。。。是否可以处理该错误,使其回显有意义的消息,但仍不保存而离开函数?我没有足够的经验去尝试/抓住/结束,我也不知道这是否可行,王子+1对于最伟大的屏幕名称,请参见问题。
:autocmd!
:source $MYVIMRC