在 vim 中,如果您处于块插入模式 ( Ctrl-V, Shift-I
) 并使用Ctrl-C
(而不是Esc
)退出,则会取消块编辑(并且仅编辑第一行)。
为什么是这样?在几乎所有其他上下文中,Ctrl-C
和Esc
是同义词。 (理想情况下有一种方法可以解决这个问题——我现在已经习惯了这样做Ctrl-C
,如果我不得不重新学习,那将是一种耻辱......)
答案1
Ctrl-c并Esc不能保证是同义的,并且经常不同。例如,在插入模式,Esc将触发缩写并转到普通的模式,而Ctrl-c不会触发缩写或InsertLeave
自动命令并直接进入普通的模式。另一个例子是在旧的vi
命令行模式下,Esc实际上会执行命令,就像您点击了一样Enter。 Vim 故意改变了这一点,因为这种行为被认为不直观且令人惊讶,但您仍然可以通过添加到x
来启用它'cpoptions'
。
至于块式视觉运算符,blockwise-operators
帮助标签有以下文档:
Visual-block Insert *v_b_I*
With a blockwise selection, I{string}<ESC> will insert {string} at the start
of block on every line of the block, provided that the line extends into the
block. Thus lines that are short will remain unmodified. TABs are split to
retain visual columns.
请注意,仅Esc
提到了,而不是Ctrl-c
。
所以,不,Ctrl-c和Esc不等价。纠正自己的错误观念绝不是一件可耻的事。一旦你意识到这一点,你就可以决定下一步该做什么。最明显的选择是了解差异并使用正确的密钥,或者确定您不需要其中一个密钥的功能并重新映射它以匹配另一个密钥。
答案2
尝试通过+然后+:map ^C esc
输入“^C” 。 CTRLvCTRLc