我最近刚刚从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上使用终端,如果这很重要的话。
当前回答
如果你想要iTerminal尊重Emacs风格的快捷方式,比如^Mf和^Mb的前进/后退一个单词,我发现最好的方法是使用这个技巧:
使iTerm以与其他操作系统相同的方式翻译“元键”
其他回答
运行cat,然后按键查看快捷方式发送的代码。 (完成后按Ctrl+C杀死猫) 对我来说,(ubuntu, konsole, xterm)按Alt+←会发送^[[1;3D,所以我会输入我的.zshrc
bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word
(实际上我更喜欢使用Ctrl +箭头来逐字移动,就像在windows或linux gui下的正常文本框中一样。)
相关问题:修复在终结者终端仿真器中运行Zsh时.zshrc中的键设置(Home/End/Insert/Delete)
如果你想要iTerminal尊重Emacs风格的快捷方式,比如^Mf和^Mb的前进/后退一个单词,我发现最好的方法是使用这个技巧:
使iTerm以与其他操作系统相同的方式翻译“元键”
对于iTerm,转到截图显示的地方,选择“自然文本编辑”
如果您已经有了一些键映射,它将在下面询问,因此选择不要丢失您之前设置的任何特殊绑定。但是,如果你不记得添加任何绑定,或者刚刚开始使用iTerm(在这台机器上),你可以安全地选择“删除”。
将以下内容添加到~/。zshrc为我在OSX Mountain Lion工作过。
bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word
为了让它为我工作,我使用了这个答案,但我必须交换代码(左<->右)
←发送十六进制编码:0x1b 0x66 发送十六进制代码:0x1b 0x62
并将以下内容添加到我的~/.zshrc
bindkey -e
bindkey "^[b" backward-word
bindkey '^[f' forward-word