我最近刚刚从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上使用终端,如果这很重要的话。
当前回答
在Mavericks(10.9.4)上,代码是1;5…所以为了绑定alt和箭头,我有我的.zshrc使用:
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
您可以使用CTRL+V,然后使用您想使用的命令
在优胜美地使用罗伯的解决方案
其他回答
在MacOS High Siera 10.13.6或Mojave 10.14.2上使用iTerm2和ZSH 为了摆脱文字,我不得不这样写:
bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word
另一个解决办法对我不起作用
在zsh中,可以使用bindkey命令查看键盘快捷键。
使用bindkey来探索无需自定义键绑定即可使用的选项。
即^[b向后移动一个单词,^[f向前移动一个单词。
如果你在CSI u模式下使用iTerm,你的.zshrc的绑定最终是:
bindkey '^[[1;3D' backward-word
bindkey '^[[1;3C' forward-word
为了让它为我工作,我使用了这个答案,但我必须交换代码(左<->右)
←发送十六进制编码:0x1b 0x66 发送十六进制代码:0x1b 0x62
并将以下内容添加到我的~/.zshrc
bindkey -e
bindkey "^[b" backward-word
bindkey '^[f' forward-word
如果你想要iTerminal尊重Emacs风格的快捷方式,比如^Mf和^Mb的前进/后退一个单词,我发现最好的方法是使用这个技巧:
使iTerm以与其他操作系统相同的方式翻译“元键”