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

发布于 2024-11-10 17:51:03 字数 145 浏览 5 评论 0原文

我打字速度非常快,有时会意外保存名称由单个;: 组成的文件。 (当我输入 :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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

弃爱 2024-11-17 17:51:03

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

: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

A simple yet effective solution would be to define an auto-command
matching potentially mistyped file names, that issues a warning and
terminates saving:

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

Note that the :throw command is necessary to make Vim stop writing
the contents of a buffer.

In order to avoid getting the E605 error because of an uncaught
exception, one can issue an error using the :echoerr command run
in the try block—:echoerr raises its error message as an exception
when called from inside a try construct (see :help :echoerr).

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

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 the eventignore option accordingly (see
:help :noautocmd and :help eventignore for details), e.g.:

:noa w :ok.txt
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文