vim - 按箭头键时,取消 vim 终端模式

当使用 vim 的终端模式(通过 :term 访问)时,如果我输入两个双引号然后按下左键(例如如果您要输入 git commit -m "" 然后返回一个字符开始消息),会发生以下情况:

  1. 航站楼已关闭。
  2. 在缓冲区中的光标上方添加了一个新行。
  3. 进入插入模式。
  4. 字符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/

相关文章:

ruby-on-rails - 将复杂的哈希传递给 Sidekiq 作业

android - 在 Kotlin 中检查两个对象的某些(不是全部)属性是否相等的惯用方法

c# - EFCore5,使用 FromSqlRaw 和 [Owned] 属性

apache-kafka - 如何删除一个特定主题的组的消费者偏移量

git - 如何在 "git checkout"的输出中着色分支名称?

python - 如何将路径参数转发到 VPC 链路端点?

python - 子进程无法使用 Pandas 执行文件

docker - 如何在 VSCode devcontainer 中使用 minikube?

c# - 使用 Lamar 注入(inject)运行时对象

ansible - 我怎样才能访问另一台服务器的ansible facts?