为什么 CTRL + C 不退出 vim?

为什么 CTRL + C 不退出 vim?

我知道如果我按esc然后输入:q!,我可以退出vim编辑器,因为这个问题

但是,标准约定是当按下ctrl+时程序退出,这会将 a 发送到当前正在运行的进程。cSIGINT

例如,toptail -fping都遵循此约定。

我的问题是这样的:为什么vim遵循这个既定的惯例?是有历史原因,还是另有原因?

在我看来,如果它像其他所有事情一样遵循这个标准约定,将会避免新用户的很多困惑。

(当我们这样做时,为什么会这样SIGINT而不是SIGTERM首先呢?)

答案1

我的问题是:为什么 vim 不遵循这个既定的约定?是有历史原因,还是另有原因?

因为vim遵循另一个古老且完善的约定,其中交互式程序中的 Control-C 将中止当前命令,而不是整个程序。交互式 shell 也遵循此约定 - Control-C 不会杀死您的 shell,但会杀死它正在运行或将要运行的命令。

不遵循该约定的程序通常会尝试通过捕获SIGINT并询问用户“您真的要退出吗”或“使用 quit 退出”等来减轻恐惧,这将它们从讨厌变为烦人。

Control-C 的其他非常完善的约定是将其用作其他命令的前缀(如在 emacs 启发的程序中,Control-G 充当 Control-C 的角色)或将所选内容复制到剪贴板。

相关内容