ALT+箭头在zsh和iTerm2中的单词之间移动

Mik*_*maa 23 keyboard-shortcuts zsh key-binding iterm2

我登录了其中一个托管提供商服务器,并注意到 ALT + left 和 ALT + right 在 GNU Screen 的 shell 提示中的单词之间移动。

我需要配置什么样的键绑定,以及在 iTerm2 中运行的本地 OS X zsh 在哪里获得这种行为?

小智 32

我在这里找到了解决方案:https : //coderwall.com/p/h6yfda。将复制其中最重要的部分,以防链接断开。

  1. 转到首选项、配置文件、键。
  2. 设置你的左边?键作为转义字符。
  3. 找到当前的快捷方式?? 或创建一个新的,具有以下设置:
    • 键盘快捷键:??
    • 操作:发送转义序列
    • Esc+: b
  4. 重复??具有以下设置的键盘快捷键:
    • 键盘快捷键:??
    • 操作:发送转义序列
    • Esc+: f

  • 值得一提的是,它特定于一个特定的终端模拟器,而不是一般的 zsh。 (3认同)

小智 7

您正在寻找关键字backward-wordforward-word。因此,如果您使用的是键绑定不起作用的外壳,请尝试bindkey -L | grep backward-word检查它们是否已配置。在zshzle(1) 中有更多关于此的信息。

您可以通过键入以下内容来手动设置键绑定:

bindkey ' Ctrl+ v Alt+ Right' 前向词

bindkey ' Ctrl+ v Alt+ Left' 反向词

我在键绑定方面也遇到了一些麻烦,问题几乎总是 Option/Alt 键发送的东西与预期的 Meta/Escape 不同。


小智 7

在使 iTerm2 的命令行导航对我来说更直观方面对我最有效(我是一个没有在命令行上长大的年轻人,但我在文本编辑器和 IDE 上花了很多时间)是到:

  • 转到首选项 -> 配置文件 -> 密钥
  • 在键映射列表下有一个框来添加/删除或加载预设(组合框)
  • Natural Text Editing在预设下拉列表中选择选项。

这会将编辑器的键默认设置为更标准的排列,而我不必单独修改每个选项。


小智 6

我不能代表 iTerm,但这些是我在 Fedora 19 上的 GNOME 终端下使用 Oh-my-zsh 运行 ZSH 5.0.7 来解决此问题的键绑定:

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

其中\e== 转义键序列(如第 4.1.1 节所述)

在某些情况下,以及[== (大写 O;如第4.2.1O节所述)。例如,在这种替换对我来说是必要的,但是如果没有则要求不进行替换并且==tmuxtmux[[

可以使用cat并按下所需的序列来获取序列的键码。例如,按下的结果<Alt+Right>应如下解释:

$ cat
^[[1;3C
Run Code Online (Sandbox Code Playgroud)

^[== \e== 转义键序列

[==[不带tmuxOR [== O(大写 o)带tmux

1;3== 我不确定这个,但逻辑上应该是这样的<Alt>

C== 右方向键

然后,将此序列作为第一个参数bindkey~/.zshrc文件中提供持久性,并绑定这意味着参数一中的击键将执行特定的编辑器命令(或 zsh 术语中的小部件),该小部件在第一个中上例中的行是forward-word.

~/.zshrc在将这两个命令附加到它之后,应该重新获取源:

$ source ~/.zshrc

现在,我的系统上的一个烦恼是,这种特定的组合导致终端仿真器在每次发出命令时发出蜂鸣声,我通过禁用

'Edit'->'Profile Preferences'->'Terminal Bell'复选框。