gpt4 book ai didi

vim - 如何强制 vi/vim 以状态 0 干净退出

转载 作者:行者123 更新时间:2023-12-05 08:48:14 25 4
gpt4 key购买 nike

vim编辑时,正常退出码为0,例如:

vi; echo $?

如果您立即执行 :q,将返回 0。但是,如果您曾经输入错误命令,它将返回1(或其他错误代码)。例如,在 vim 中键入 :aaa 将在 vim 中给出错误 E492: Not an editor command: aaa。在那之后,无论我做什么,vim 随后都会以状态 1 退出。

这是编辑 git 提交信息时的一个问题,因为如果你在输入时犯了错误(在 vim 中很容易做到),随后的提交信息将是扔掉了。 (是的,我知道有一些方法可以找回它 - 我不想每次都知道自己犯了错误时遇到麻烦。)

问题:是否有 vim 命令将退出代码“重置”为 0?

这里有一个类似的问题:can i force vim to exit with 0 status .但是,这是由于使用 vi 而不是 vim,如果您搜索不存在的字符串,它(显然)会以非零值退出。这个问题专门针对 vim

编辑:感谢您在这里的回答!一些额外的细节:

  • 这是在 MacOS 11.2.1 上。
  • 我没有~/.vimrc,所以我只能回到Mac 提供的/usr/share/vim/vimrc,这看起来很基础。
  • 调用 vi -u NONE 仍然会导致上述行为。
  • (最有趣)调用 vim 解决了这个问题。是的,我知道我在上面提到过另一个答案是使用 vi 而不是 vim,但我被这个打乱了:
$ which vi
/usr/bin/vi
$ which vim
/usr/bin/vim
$ ls -l /usr/bin/vi
lrwxr-xr-x 1 root wheel 3 Jan 1 2020 /usr/bin/vi -> vim

当我运行 vi --versionvim --version 时,我得到了相同的输出。完全相同vim 是否会根据调用的可执行文件名称更改其行为?如果是这样,我可以在 .vimrc 中添加一些东西来覆盖那个开关吗?我很想知道。同时,我可以使用 export EDITOR="vim" 解决这个问题。

最佳答案

默认情况下,如果出现“正常”错误,例如无效命令或其他正常用户输入错误,Vim(至少还有 vi 的一些其他实现,例如 nvi)返回 0。在这种情况下 ed 的行为是退出非零值,正如您所发现的,这种行为通常是不可取的,因为人类是不完美的并且会犯很多错误,这就是 Vim 不这样做的原因那个。

如果你使用 :cq,Vim 应该以非零值退出,它是有意的,如果满足某些错误条件(例如,你运行 vim -y但显示无法启动。

您的配置设置或插件可能会导致此行为。您可以尝试运行 vim -u NONE -U NONE 来验证这一点,然后通过注释掉 .vimrc 的部分来隔离问题。也有可能你的 Vim 发行商认为这是一个理想的特性,可以为你添加和修补它,但你没有提到你的操作系统或 Vim 包的来源,所以很难说。

要始终强制零退出,您可以尝试 :cq 0,但这并不比标准的 :q 更有效,因为它们都调用具有完全相同的值 (0) 的完全相同的函数 (getout)。

关于vim - 如何强制 vi/vim 以状态 0 干净退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66283714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com