我最近刚刚从bash切换到zsh,但我错过了我的Alt+LeftArrowKey和Alt+RightArrowKey来回一次一个字。
现在,如果我按Alt+LeftArrowKey,我就会返回几个字母,然后就卡住了。我不会再往前走了,它不会像我期望的那样,用Alt+RightArrowKey回到行尾。我甚至不能用方向键到行末,只能到倒数第二。不能在行上输入新的字符,也不能删除。
我如何找回我心爱的捷径?
我在Mac OS X上使用终端,如果这很重要的话。
我最近刚刚从bash切换到zsh,但我错过了我的Alt+LeftArrowKey和Alt+RightArrowKey来回一次一个字。
现在,如果我按Alt+LeftArrowKey,我就会返回几个字母,然后就卡住了。我不会再往前走了,它不会像我期望的那样,用Alt+RightArrowKey回到行尾。我甚至不能用方向键到行末,只能到倒数第二。不能在行上输入新的字符,也不能删除。
我如何找回我心爱的捷径?
我在Mac OS X上使用终端,如果这很重要的话。
当前回答
在zsh中,可以使用bindkey命令查看键盘快捷键。
使用bindkey来探索无需自定义键绑定即可使用的选项。
即^[b向后移动一个单词,^[f向前移动一个单词。
其他回答
对于任何使用iTerm的人,无论shell
在我看来,这里提供的所有解决方案都是一种倒退的方法。你实际上是在告诉你的shell监听一些esc序列或其他你在终端中设置的键绑定,在切换shell时产生兼容性问题(如果你SSH到其他shell,从BASH切换到ZSH等,你会丢失一些(如果不是全部)键绑定)。
大多数shell都有一组预先绑定的默认序列。此外,虽然它们不是100%一致,但它们足够接近了。因此,我发现在shell中为特定操作创建键绑定的最简单方法是告诉终端应用程序绑定到跨shell一致的默认键绑定。
我写了一个压缩解决方案,让您的终端响应接近本地mac键绑定在这里
打开iTerm首选项⌘+,并导航到Profiles选项卡(可以使用Keys选项卡,但将密钥绑定添加到配置文件中可以保存配置文件并将其同步到多台计算机)和Keys子选项卡,并输入以下内容:
将光标向左移动一个字
←发送十六进制代码:0x1b 0x62
向右移动光标一个字
发送十六进制代码:0x1b 0x66
这应该给你想要的行为,不仅在ZSH,而且如果你SSH到一个服务器运行BASH, irb/窥探,节点等。
在zsh中,可以使用bindkey命令查看键盘快捷键。
使用bindkey来探索无需自定义键绑定即可使用的选项。
即^[b向后移动一个单词,^[f向前移动一个单词。
在MacOS Monterey上,在~/中使用以下命令。zshrc使SHIFT +箭头跳字:
bindkey "^[[1;2C" forward-word
bindkey "^[[1;2D" backward-word
这是选项+箭头:
bindkey "^[^[[C" forward-word
bindkey "^[^[[D" backward-word
在Mavericks(10.9.4)上,代码是1;5…所以为了绑定alt和箭头,我有我的.zshrc使用:
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
您可以使用CTRL+V,然后使用您想使用的命令
在优胜美地使用罗伯的解决方案
为了让它为我工作,我使用了这个答案,但我必须交换代码(左<->右)
←发送十六进制编码:0x1b 0x66 发送十六进制代码:0x1b 0x62
并将以下内容添加到我的~/.zshrc
bindkey -e
bindkey "^[b" backward-word
bindkey '^[f' forward-word