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


19

我登录了一个托管提供程序服务器,并注意到ALT +左和ALT +右在GNU屏幕的shell提示中的单词之间移动。

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


对这个问题感兴趣的人可能还想知道zsh单词不是bash单词。FOO=BARzsh是1个字,bash是2个字。同样,如果将光标设置在的末尾foo --bar并执行alt + backspace,则在bash中将具有foo --,在zsh中将具有foo 。Zsh为bash添加了很多功能,但是它也有很多疯狂的默认值可以覆盖。
weberc2

Answers:


28

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

  1. 转到首选项,配置文件,密钥。
  2. 设置左left键充当转义字符。
  3. 找到⌥←的当前快捷方式或使用以下设置创建一个新的快捷方式:
    • 键盘快捷键:⌥←
    • 行动:发送转义序列
    • Esc +:b
  4. 对⌥→键盘快捷键重复以下设置:
    • 键盘快捷键:⌥→
    • 行动:发送转义序列
    • Esc +:f

1
值得一提的是,它特定于一个特定的终端仿真器,而不是zsh。
Hi-Angel

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不同。


您也可以使用emacs-forward-wordemacs-backward-word。不同之处在于,您跳到单词的末尾,然后跳到单词的开头,而不是总是跳到单词的开头。
Aalex Gabi

这是最可靠,最干净的解决方案。它可以适应不同种类的键映射和/或所有种类的ssh-tmux-zsh组合。其他涉及硬编码转义序列的解决方案只能解决某些特定系统中的某些情况。
HKTonyLee18年

3

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

bindkey "\e[1;3C" forward-word
bindkey "\e[1;3D" backward-word

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

[== O(大写O;如第4.2.1节所述),在某些情况下。例如,在tmux我看来,这种替换是必要的,但是如果不需要tmux,则不需要进行替换,并且[==[

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

$ cat
^[[1;3C

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

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

1;3 ==我不确定这一点,但从逻辑上讲应该 <Alt>

C ==右箭头键

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

~/.zshrc在将这两个命令附加到以下命令后,应该重新获得:

$ source ~/.zshrc

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

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


2

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

  • 转到首选项->个人资料->键
  • 在“按键映射”列表下,有一个框可以添加/删除或加载预设(组合框)
  • Natural Text Editing在“预设”下拉列表中选择选项。

这使编辑器的键默认为更标准的排列方式,而无需我单独修改每个选项。


0

我建议您使用它zkbd来配置键绑定。我使用它,并且Alt+ Left/ Alt+ Right在iTerm2上工作正常。有关zshcontrib(1)zkbd的详细信息,请参见。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.