当使用 vim 的终端模式(通过 :term
访问)时,如果我输入两个双引号然后按下左键(例如如果您要输入 git commit -m ""
然后返回一个字符开始消息),会发生以下情况:
D
被插入。准确的输入序列是:term<cr>git commit -m ""<left>
为什么会发生这一系列事件,以后该如何预防?
最佳答案
事实证明,在某些终端中,箭头键是用转义键序列表示的,例如左箭头表示为Esc O D
。 .在我的 vimrc 中,我有映射 tnoremap <esc> <c-w>:q!<cr>
这是为了在我按下转义键时关闭终端。但是由于 vim 解释我的箭头键序列的方式,当我按下任何箭头时它会关闭终端。我通过将映射更改为 tnoremap <esc><esc> <c-w>:q!<cr>
解决了这个问题.
可以在此处找到有关此错误的更多背景信息:https://github.com/vim/vim/issues/2216#issuecomment-337566816
https://stackoverflow.com/questions/65239509/