我输入速度非常快,并意识到有时我会意外保存名为;
或:
的文件(我输入:wq
,有时会引入拼写错误。)
有没有办法编写一个拒绝保存与某些名称匹配的文件的宏?
答案 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