如何防止在 Vim 中保存具有特定名称的文件?
我打字速度非常快,有时会意外保存名称由单个;
或:
组成的文件。 (当我输入 :wq
命令时,有时会出现拼写错误。)
有没有办法编写一个宏来拒绝保存与某些名称匹配的文件?
I type really fast and sometimes accidentally save a file with the name consisting of a single ;
or :
. (A typo is sometimes introduced as I type the :wq
command.)
Is there any way to write a macro that rejects files matching certain names from being saved?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一个简单而有效的解决方案是定义一个自动命令
匹配可能输入错误的文件名,发出警告并
终止保存:
注意
:throw
命令是使 Vim 停止写入所必需的缓冲区的内容。
为了避免由于未捕获而出现
E605
错误异常,可以使用
:echoerr
命令运行发出错误在
try
块中 -:echoerr
将错误消息作为异常引发当从
try
构造内部调用时(请参阅:help :echoerr
)。如果需要保存名称与模式匹配的文件
在上面的自动命令中使用,可以在前面添加一个写入命令
使用
:noautocmd
或相应地设置eventignore
选项(请参阅:help :noautocmd
和:help eventignore
了解详细信息),例如:A simple yet effective solution would be to define an auto-command
matching potentially mistyped file names, that issues a warning and
terminates saving:
Note that the
:throw
command is necessary to make Vim stop writingthe contents of a buffer.
In order to avoid getting the
E605
error because of an uncaughtexception, one can issue an error using the
:echoerr
command runin the
try
block—:echoerr
raises its error message as an exceptionwhen called from inside a
try
construct (see:help :echoerr
).If it is ever needed to save a file with a name matching the pattern
used in the above auto-command, one can prepend a writing command
with
:noautocmd
or set theeventignore
option accordingly (see:help :noautocmd
and:help eventignore
for details), e.g.: