为什么Vim与Ctrl + v一起使用时会吞噬Ctrl,以及如何解决它?

细河河

我正在使用Vim/etc/zsh/zshrc为其添加键绑定,zsh因为它不适用于inputrc在我的tmux终端中,当我输入Ctrl+ vthen Ctrl+时LeftArrow,将显示shell ^[OD但是,当我处于Vim插入模式时,按相同的顺序将导致^[[D

我发现^[[D是,当我输入的内容外壳生产Ctrl+vLeftArrow我也改变了^[[D^[OD在该文件中/etc/zsh/zshrc,它按预期工作(按Ctrl+LeftArrow使光标移动回一个字)。这是我正在谈论的行:

bindkey "^[OD" backward-word

我猜Vim出了点问题,因为它正在消耗Ctrl我该如何解决?

吉勒斯“别再邪恶了”

实际上,这是您的终端在做一些奇怪的事情,而不是Vim。出于历史原因,终端有两组与光标键相关联的控制序列:一组用于全屏应用程序,通常称为“应用程序光标键模式”,另一组用于读评估打印应用程序(例如shell)。

在过去,读评估打印应用程序不具有任何行编辑功能,并且其目的是使终端或OS终端驱动程序最终变得更加复杂。因此,终端发送了针对终端驱动程序的控制序列。某种程度上,Unix终端驱动程序从未获得过不错的行编辑功能。而是将它们添加到应用程序中(例如,通过readline库)。

的终端发送␛OD用于Ctrl+Left在行编辑光标键模式,并且␛[D在应用光标键模式。您有两种选择:

  • 配置您的终端不要在两种模式之间产生差异。如何执行此操作完全取决于您的终端仿真器。
  • 忍受它。由于任何给定的应用程序始终将终端设置为相同模式,因此只需根据其使用的模式配置其键绑定即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么CTRL + C不退出vim?

什么是模拟以及它如何与PrincipalContext一起使用

为什么vim增量(Ctrl + A)跳过8s和9s?

为什么ctrl-t插入奇怪的文本而不是在fzf / vim中打开新标签页?

CTRL + V在vim中做什么?

CTRL + Space在Vim中做什么?

emacs的ctrl-k的vim等价于什么?

Ctrl + w + Tab 在 vim 中做什么

在Vim中,为什么临时标准模式(从“插入模式”按Ctrl-O)执行命令要慢得多?

phpmyadmin受阻,为什么以及如何解决它?

为什么 kivy 与 python 的“elevate()”函数一起使用时会失败?

将Byobu与tmux一起使用时在Vim中使用Ctrl +箭头键时出现问题

Promise 中的 setTimeout - 如何解决以及为什么它只运行一次?

谁能告诉我为什么对对象Staff使用Null以及如何解决它

为什么不能发送热键Ctrl?

为什么Ctrl + Alt + <不起作用?

为什么选择ctrl + c终止进程?

为什么左 ctrl 不会触发 ssLeft?

为什么在Outlook中无法使用SendInput Ctrl + V?

什么是 MOJO 编解码器以及它如何与 ffmpeg 一起使用

Vim为什么在此重新映射的密钥上延迟?以及我该如何解决?

为什么我的锚文本堆叠在一起,我该如何解决?

为什么在使用repaint()而不是与getParent()。repaint()一起使用时会发生此Swing错误?

序列化的含义是什么以及为什么与socket.s一起使用时性能更好

为什么 FormArrayGroup 在与 Angular 中的嵌套表单组一起使用时会抛出错误?

为什么将std :: bind与lambda一起使用时会产生如此大的对象?

为什么使用与父级一起声明的 std::function 在与子级一起使用时会显示错误?

CTRL-C如何与Java程序一起使用

为什么Break会让我一次跳出2个循环,以及如何解决它