我最近从bash切换到了zsh,但我错过了使用Alt+LeftArrowKey和Alt+RightArrowKey一次移动一个单词的功能。
现在,如果我按Alt+LeftArrowKey,我只能回退几个字母,然后就卡住了。我无法再向后回退,Alt+RightArrowKey也不能让光标回到行末,这与我预期的不同。我甚至不能使用箭头键到达行末,只能到达倒数第二个字符。也无法输入新的字符或删除字符。
我如何才能恢复我钟爱的快捷键呢?
我使用的是Mac OS X系统和Terminal。
运行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下的普通文本框中一样。)
相关问题:在Terminator终端模拟器中运行Zsh时修复键设置(Home / End / Insert / Delete)
打开 iTerm 首选项 ⌘+, 并导航到配置文件选项卡(也可以使用键盘快捷键选项卡,但将快捷键添加到您的配置文件中可让您保存您的配置文件并将其同步到多台计算机上),然后打开按键映射子选项卡,点击增加按键映射并输入以下内容:
将光标向左移动一个单词
⌥+← 发送十六进制代码:
0x1b 0x62
将光标向右移动一个单词
⌥+→ 发送十六进制代码:
0x1b 0x66
这样不仅在 ZSH 中,而且在通过 SSH 连接到运行 BASH、irb/pry、Node.js 等服务器时都能得到所需的行为。
bindkey | grep forward-word
,你应该会看到返回了"^[f" forward-word
,但如果没有,你有两个选择。将其映射到其他返回值之一,或将"^[f" forward-word
添加到你的.zshrc
文件中。 - Travis在我的OSX Mountain Lion上,将以下内容添加到~/.zshrc中对我有效。
bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word
bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word
- Johannes Gontrumbindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word
其他的解决方案对我不起作用
forward-word
和backward-word
的默认绑定分别为alt-f
和alt-b
。ctrl-f
和ctrl-b
分别对应forward-character
和backward-character
的一致性。~/.zshrc
文件中。bindkey -e
bindkey "^[b" backward-word
bindkey '^[f' forward-word
bindkey
绑定为forward-word
而不是backward-word
,将^[f
绑定到它可能会更清晰明了。这样做可以避免混淆。 - Nickolay~/.zshrc
文件中即可。bindkey -e
bindkey "^[[3~" delete-char # Key Del
bindkey "^[[5~" beginning-of-buffer-or-history # Key Page Up
bindkey "^[[6~" end-of-buffer-or-history # Key Page Down
bindkey "^[[H" beginning-of-line # Key Home
bindkey "^[[F" end-of-line # Key End
bindkey "^[[1;3C" forward-word # Key Alt + Right
bindkey "^[[1;3D" backward-word # Key Alt + Left
~/.zshrc
中,使SHIFT
+ Arrows
可以跳转单词:bindkey "^[[1;2C" forward-word
bindkey "^[[1;2D" backward-word
下面介绍的是使用 Option
+ 方向键
的技巧:
bindkey "^[^[[C" forward-word
bindkey "^[^[[D" backward-word
bindkey
命令查看键盘快捷键。bindkey
来探索可用的选项,而不需要自定义键绑定。^[b
向后移动一个单词和^[f
向前移动一个单词。
^[^[[C
表示向前一个单词,而^[^[[D
表示向后一个单词,但在 .zshrc 中更新它们出了一些问题。 - Yuntibindkey "^[^[[D" backward-word
和bindkey "^[^[[C" forward-word
就解决了我的问题! - Fernando Espinosasource ~/.zshrc
。 - Aaron