使用 vi 时,您可以使用Ctrl+退出插入模式C,而不是更传统的Esc。是否存在不希望使用前者而不是后者的情况?除了最佳实践之外,它还会破坏其他什么吗?
答案1
Ctrl-C和在大多数模式下Esc都不相同,包括插入模式。区别在于触发缩写而不触发缩写。这对您是否重要取决于您或您使用的任何插件是否使用缩写。vi
vim
EscCtrl-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 有其自己的传统行为:中断进程并使终端处于奇怪的状态。