在zsh中寻找ALT + LeftArrowKey解决方案

时间:2012-09-12 06:41:08

标签: shell key zsh

我刚刚从bash切换到zsh,但我想念我的 Alt + LeftArrowKey Alt + RightArrowKey 一次来回一个字。

现在,如果我按 Alt + LeftArrowKey ,我会回复几封信,然后我就卡住了。我不会再向后退,它不会像我期望的那样回到 Alt + RightArrowKey 的行尾。我甚至不能使用箭头键到达行的末尾,只能到倒数第二个。不能在线上输入新的字符或者确实删除。

如何获得我心爱的快捷方式?

如果重要的话,我使用终端在Mac OS X上。

10 个答案:

答案 0 :(得分:169)

运行cat,然后按键查看快捷方式发送的代码 (完成后,按 Ctrl + C 以终止cat。)
对我来说,(ubuntu,konsole,xterm)按 Alt + 发送^[[1;3D,所以我会放入我的 .zshrc

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

(实际上我更喜欢用 Ctrl +箭头逐字移动,就像在windows或linux gui下的普通文本框中一样。)

相关问题:Fix key settings (Home/End/Insert/Delete) in .zshrc when running Zsh in Terminator Terminal Emulator

答案 1 :(得分:125)

对于任何使用iTerm的人,无论shell

我认为这里提供的所有解决方案都采取了倒退的方式。你实际上是在告诉你的shell监听你在终端中设置的一些esc序列或其他键绑定,当你切换shell时会产生兼容性问题(如果你SSH到其他shell,从BASH切换到ZSH等等你输了一些(如果不是全部)键绑定)。

大多数shell都有一组预先绑定的默认序列。此外,虽然它们不是100%一致,但它们足够接近。因此,我发现为shell中的特定操作创建键绑定的最简单方法是告诉终端应用程序绑定到跨shell一致的默认键绑定。

我写了一个压缩解决方案,让您的终端响应接近本机mac键绑定here

打开iTerm首选项 + 并导航到Profiles标签(可以使用Keys标签,但添加键绑定到您的个人资料允许您save your profile并将其同步到多台计算机)和keys子标签,并输入以下内容:

将光标向左移动

  

+ 发送十六进制代码:0x1b 0x62

将光标向右移动一个字

  

+ 发送十六进制代码:0x1b 0x66

这不仅可以在ZSH中提供所需的行为,而且还可以在运行BASH,irb / pry,节点等的服务器上进行SSH操作。

答案 2 :(得分:62)

在OSX Mountain Lion上为〜/ .zshrc添加以下内容。

bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word

答案 3 :(得分:6)

虽然没有严格回答您的问题,但forward-wordbackward-word的默认绑定为alt-falt-b

这适用于所有地方,不需要你离开主行,并且具有良好的助记符属性(f = forward,b = back),同时也与ctrl-fctrl-b一致forward-characterbackward-character

撕掉你的方向键!

答案 4 :(得分:5)

在MacOS High Siera 10.13.6或Mojave 10.14.2上,并结合使用iTerm2和ZSH 要摆脱词语,我必须像这样:

bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word

另一种解决方案不适用于

答案 5 :(得分:1)

On Mavericks(10.9.4)代码是1; 5 ...所以对于使用箭头绑定alt我使用这个:.zshrc:

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

您可以使用CTRL + V,然后使用您要使用的命令

优胜美地的

使用Rob的解决方案

答案 6 :(得分:0)

为了让它适合我,我使用了this answer,但是我必须交换代码(左边< - >右边)

⌥+←发送十六进制代码:0x1b 0x66
⌥+→发送十六进制代码:0x1b 0x62

并将以下内容添加到我的~/.zshrc

bindkey -e
bindkey "^[b" forward-word
bindkey '^[f' backward-word

答案 7 :(得分:0)

在zsh中,您可以使用bindkey命令查看键盘快捷键。

使用bindkey探索没有自定义键绑定的可用选项。

^[b后退一个单词,^[f前退一个单词。

答案 8 :(得分:0)

如果您以CSI u模式使用iTerm,则.zshrc的绑定最终为:

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

答案 9 :(得分:0)

如果您希望 iTerminal 尊重 Emacs 样式的快捷方式,例如 ^Mf 和 ^Mb 来​​向前/向后一个单词,我找到了使用此提示的最佳方法:

Making iTerm to translate 'meta-key' in the same way as in other OSes