使用 ctrl+c 而不是 esc 退出插入模式会破坏 vi 中的任何内容吗?

使用 ctrl+c 而不是 esc 退出插入模式会破坏 vi 中的任何内容吗?

使用 vi 时,您可以使用Ctrl+退出插入模式C,而不是更传统的Esc。是否存在不希望使用前者而不是后者的情况?除了最佳实践之外,它还会破坏其他什么吗?

答案1

Ctrl-C和在大多数模式下Esc都不相同,包括插入模式。区别在于触发缩写而不触发缩写。这对您是否重要取决于您或您使用的任何插件是否使用缩写。vivimEscCtrl-c


Esc请注意,假设并Ctrl-C执行会更安全不是中的意思是相同的vim。其他例子来自同一站点的是退出块插入模式时(不是在 中vi)。

答案2

如果您指的是vim,则存在细微差别。CTRL-C不检查缩写,也不会触发事件InsertLeave。因此,如果您的插件定义了任何autocmd依赖于 的语句InsertLeave,它们将不会被触发。

来自官方文档http://vimhelp.appspot.com/insert.txt.html:

<Esc> or CTRL-[ End insert or Replace mode, go back to Normal mode.  Finish
                abbreviation.

CTRL-C          Quit insert mode, go back to Normal mode.  Do not check for
                abbreviations.  Does not trigger the InsertLeave autocommand
                event.

CTRL-C您可以为to定义一个映射<esc>,然后它将触发InsertLeave

答案3

我想你的意思是vim,不是vi

这确实在 中有效vim,但除非我 100% 确定我永远不会接触非 Linux 操作系统,否则我不会使用它。原因是其他操作系统可能有自己的 实现vi,但没有实现这一点,并且您可能会发现vi在这些平台上运行时,Ctrl-C 有其自己的传统行为:中断进程并使终端处于奇怪的状态。

相关内容