防止在Vim中保存具有特定名称的文件

时间:2011-06-02 05:51:49

标签: vim autocmd

我输入速度非常快,并意识到有时我会意外保存名为;:的文件(我输入:wq,有时会引入拼写错误。)

有没有办法编写一个拒绝保存与某些名称匹配的文件的宏?

1 个答案:

答案 0 :(得分:17)

一个简单而有效的解决方案是定义自动命令匹配 可能输入错误的文件名,发出警告并终止保存。

:autocmd BufWritePre [:;]* throw 'Forbidden file name: ' . expand('<afile>')

请注意,:throw命令是使Vim停止写入的必要条件 缓冲区的内容。

为了避免因未捕获的异常而导致E605错误,一个 可以使用:echoerr块中运行的try命令发出错误。 (:echoerr从内部调用时将其错误消息作为异常引发 一个try构造。见:help :echoerr。)

:autocmd BufWritePre [:;]*
\   try | echoerr 'Forbidden file name: ' . expand('<afile>') | endtry

如果需要保存名称与中使用的模式匹配的文件 上面的自动命令,可以用:noautocmd或者前置写入命令 相应地设置eventignore选项(有关详细信息,请参阅:help :noautocmd:help eventignore),例如

:noa w :ok.txt