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

Mad*_*sen 100 shell zsh key

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

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

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

如果这很重要,我使用终端在Mac OS X上.

lol*_*que 207

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

bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word
Run Code Online (Sandbox Code Playgroud)

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

相关问题:在终结者终端仿真器中运行Zsh时修复.zshrc中的键设置(Home/End/Insert/Delete)

  • 你是我的救世主!在我的Mac上"Alt + < - "给出"^ [b"和 - >给出"^ [f",所以我添加了这些.奇迹般有效.Ctrl +箭头保留用于在Mac上的桌面之间切换. (10认同)
  • 我在cat下的输出是`^ [^ [[C`用于前向词和`^ [^ [[D`用于后向词,但是.zshrc中的这些更新因某些原因不起作用). (7认同)
  • @Yunti - 在 *~/.zprofile* 中放置 `bindkey "^[^[[D" 后向字` 和 `bindkey "^[^[[C" 前向字` 对我有用! (5认同)
  • 编辑文件后不要忘记运行 `source ~/.zshrc` (2认同)

Tra*_*vis 151

对于任何使用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/pry,节点等的服务器.

  • 这必须是公认的解决方案,谢谢! (10认同)
  • 我在接受的解决方案上遇到了麻烦,因为我的 zsh 工作正常,但 irb 和其他控制台却没有。擦除以前的设置(按照建议在 iTerm 配置文件中)就像一个魅力! (2认同)
  • bindkey 解决方案会在 Mac 上发出烦人的错误声音。这应该是正确的做法。 (2认同)

Rob*_*yer 68

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

bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word
Run Code Online (Sandbox Code Playgroud)

  • '\ e\e'阻止铃声.我在El Capitan上使用iTerm 2在终端兼容模式下的配置是`bindkey'\ e\e [D"reverse-word``bindkeykey\e\e [C"forward-word` (12认同)
  • 这个解决方案会在每次使用时触发iTerm 2中的"铃声",因此在单词之间跳跃会变得非常烦人. (3认同)

mcv*_*vkr 44

对于 iTerm,请转到此屏幕截图显示的位置并选择“自然文本编辑”

在此输入图像描述

如果您已经有一些键映射,它会在下面询问,请相应地选择不要丢失您之前设置的任何特殊绑定。但是,如果您不记得添加任何绑定或刚刚开始使用 iTerm(在本机上),您可以安全地选择“删除”

在此输入图像描述

  • 这怎么不是公认的答案,完美! (4认同)
  • 是的!我正在使用 iTerm,这很有效,谢谢! (2认同)
  • 这是 iTerm 的最佳工作答案! (2认同)

Vet*_*lll 13

在MacOS High Siera 10.13.6或Mojave 10.14.2上并将iTerm2与ZSH结合使用要移开单词,我必须这样输入:

bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word
Run Code Online (Sandbox Code Playgroud)

另一个解决方案对您不起作用

  • 这也是唯一对我有用的解决方案。谢谢!Mac OS 莫哈韦沙漠 (2认同)

0x8*_*x89 5

虽然没有严格的回答你的问题,默认绑定forward-wordbackward-wordalt-fRESP.alt-b.

这工作无处不在,不要求你离开家行,有一个很好的记忆性(F =前,B =背面),同时还具有一致的ctrl-fctrl-bforward-characterbackward-character.

撕掉你的箭头键!

  • 在zsh / iterm2中对我不起作用,显示ƒ和∫(cb cf可以工作)。 (2认同)