Ctrl +向左/向右箭头键


25

在最后一次系统更新后,zsh终端上的ctrl +左/右箭头命令不执行任何操作。ctrl + u也有问题,因为通常该命令从光标删除到行的开头,而现在却删除了整行。有人知道如何解决这些问题吗?谢谢你们。


找到任何可接受的答案了吗?我认为Goncalo的答案很好。
莱奥波德·赫兹(LéoLéopoldHertz)2016年

Answers:


44

FWIW,这是使用zsh的默认设置在我的环境(rhel5.x)上起作用的内容。

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

5
^[^[[D^[^[[C分别用于OSX
Jon z

1
确认,Goncalo的提议也可以在Debian 8.5中使用。我只是想知道为什么.zshrc默认情况下未内置此代码。
莱奥波德·赫兹(LéoLéopoldHertz),2016年

就像在Ubuntu Artful中一样具有魅力,谢谢!
Konrad Garus

如果你想使用$terminfo,而不是转义序列:按键$terminfo[kLFT5]$terminfo[kRIT5]工作对我来说
Griddo

14

Ctrl + U很可能是因为光标位于行尾。其次,您将哪个版本的Gentoo称为“最新系统更新”?

您想按ctrl +向左/向右做什么?

  • 添加到zsh配置:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • 从旧的废料中我发现(可能会有所帮助):

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • 或查看链接,对您有帮助吗?

注意:如果配置有效,但假定的按键无法实现您想要的功能,则可能是因为按键定义与您和我的按键定义不同,请执行: cat > /dev/null 并按您想要输出的按键并进行相应调整。


1
“当然,我的意思是当光标位于中间时,“ Ctrl + U很可能是因为光标位于行尾。”您想按ctrl + left / right来做什么?通常按Ctrl +向左箭头:跳过向左移动的单词,等等...
Riskio 2012年

您正在使用哪个外壳/终端?确定要使用Emacs或通常使用的任何终端以及/ bin / bash?你在屏幕上跑吗?
2012年

1
请阅读那里的问题
。–

1
@Masi不确定,我在他回答两年之前就回答了,我们的回答几乎是相同的,我只是展示了两种不同的方法来做..您可以将它们合并以合并他所写的内容。
2013年

1
@Masi我所知道的就是那时(记得是2010年至2012年。很久以前)这两个(及其组合)在许多不同的系统上为我工作。我当时使用的是Unix和Linux(他使用的是Gentoo,这是一个滚动发布的操作系统)。而且还是本就很多例子痕迹..比如这个库。现在,我仍然不确定为什么,但是它至少可以在两台机器上运行,所以我想分享一下。并且确保他今天的情况更加清晰,而且我不介意他获得所有赞成票。这是旧版帖子。
2013年

5

有效的方法并不直接取决于发行版(Gentoo,Debian,RHEL等)或外壳(ZSH,KSH,BASH)-它取决于使用哪个版本terminal emulator及其设置:konsole,terminator,urxvt,lx-terminal发行版可能会有所不同,如果它使用了不同的标准外壳程序配置(fx.zshrc),并且使用的外壳程序对该发行版上的外壳程序进行了配置可能已经解决了。

以下是一些特定于终端仿真器的解决方案:

urxvt / rxvt-unicode(甚至其他):

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

终结者,konsole和xterm(可能还​​有其他):

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

对于更一般的方法,请启动终端,按CTRL-V,然后按要使用转义码(名称)的组合键-在这种情况下,请使用CTRL-leftarrow和CTRL-rightarrow组合键-然后将每个组合的输出两个引号之间的组合键。


1
您尝试过CTRL-V建议吗?也许您的终端对按键的解释不同,所以按键需要绑定到不同的“符号”吗?
miyalys '16

1
我更新了答案。有多种解决方案,取决于所terminal emulator使用的解决方案。发行版或外壳无关紧要。这也可能就是为什么它不在.zshrc中的原因,因为适用于一个终端仿真器的不适用于另一终端仿真器。但是,如果zshrc fx可以解决。读取$ TERM环境变量,并根据结果应用不同的bindkey设置。
miyalys 16/12/26

2

解决了。

使用的终端:Konsole

解决方法:右键单击终端(或菜单栏中的设置)->更改当前配置文件->键盘映射->更改为默认(xfree4)


甚至与zsh都没有真正的联系,但是可以肯定的是,修复是一种修复。
2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.