使 iTerm 以与其他操作系统相同的方式翻译“元密钥”

Posted

技术标签:

【中文标题】使 iTerm 以与其他操作系统相同的方式翻译“元密钥”【英文标题】:Making iTerm to translate 'meta-key' in the same way as in other OSes 【发布时间】:2010-09-16 19:37:09 【问题描述】:

在带有 emacs 键绑定的 bash shell 中,您可以使用 M-f、M-b 等组合键在 shell 提示符上分别向前或向后移动一个单词。通常,元键映射到 Windows 和 Linux 上的 Alt 键。但是,在 iTerm 中,我找不到将这个元键映射到 MacBook Pro 上的 Option 或 Command 键的方法。

似乎在 OS X 中,元键默认映射到 ESC 键。所以你可以在iTerm上使用ESC-f、ESC-b。但是,ESC 键显然不实用。此外,iTerm 确实有允许您修改元键映射的选项(书签 > 配置文件 > 键盘配置文件 > 全局 > 选项键为...),此设置似乎根本不起作用。

因此,如果有人知道这个问题的解决方案是什么,请告诉我。

我已升级到最新版本 0.9.6.1012,但此行为仍然存在。

编辑:对我的问题进行一些澄清。我正在谈论的键绑定是针对 bash shell,而不是在 emacs 中。碰巧的是,默认情况下,bash shell 也使用与 emacs 相同的键绑定。

【问题讨论】:

在搞砸了这个问题一段时间后,无法找到解决方案。我现在放弃并切换到终端。 不要忘记 iterm2 已经存在并且那里一切正常=) 即使使用 iterm2,从 2021 年 5 月全新安装开始,在 Mac 上仍需要重新映射左/右选项以充当“+Esc”而不是“正常” 【参考方案1】:

Cmd+.ProfilesKeys 并选择Left option Key acts as: +Esc

在 emacs 中对我有用,但我不确定它是否会产生任何其他不良影响。

【讨论】:

我确实尝试了 Option Key as... 的所有选项,但它们在 bash shell 中都不适合我。它只显示“?”每次我按元键组合。 看来您的输入语言必须是美国语言才能使 +ESC 选项起作用。当我选择了日文/罗马字输入法时,+ESC 对我不起作用,但是一旦我将输入语言切换到美国,它就开始起作用了 首选项、配置文件、键并选择左选项键充当:+Esc。然后您将同时拥有左选项键和 Esc 键作为元键。这就是我的情况。 对于 iTerm 2,这似乎是推荐的选项。 对于我的外接键盘,我必须将左右选项键都设置为使用Esc+,即使我使用的是左选项键,它仍然会打印出奇怪的字符。这可能是因为我使用 Mac 键盘设置中的 Keyboard Modifiers 选项来更改键。【参考方案2】:

转到书签> 管理个人资料。然后选择 Keyboard Profiles > Global 并选择 Option Key as Meta。这适用于我的版本 0.9.6.1201。

【讨论】:

我不得不更改 xterm (OS X) 条目而不是全局条目,但它现在可以工作了。 我不知道为什么我的机器上的设置在 0.9.6.1201 和我尝试的其他几个版本上被破坏了。但是,它适用于最新的 0.9.6 版本和 0.10。所以现在应该不是问题了。 在 iTerm2 中,这仅在我为 alt+->alt+<- 重新定义 配置文件快捷键Send 后才有效转义序列 + f/b 分别。 我必须打开一个新的 iterm 会话才能启动 @SridharRatnakumar 也适用于 iTerm【参考方案3】:

在菜单栏中 Iterm2 => Preferences => Profiles 选择键选项卡并选择

左选项键作为+Esc

在 irssi 也为我工作。

【讨论】:

好极了,这也适用于iTerm2 + tmux的组合【参考方案4】:

iTerm2 用户this answer 只是部分解决了问题。

Cmd+.ProfilesKeys 并选择Left option Key acts as: +Esc

除此之外,您还必须转到 Preferences (Cmd+,) ➔ ProfilesKeys 并在 Key Mappings 中找到这些 Key Combination: 和 。双击每个映射并将它们的 ActionEsc+ 更改为以下内容:

【讨论】:

这真的很有帮助。非常感谢兄弟! 出于某种原因,我必须在我的应用程序中按 CMD + ALT + -> .... .. @nicolas 此线程适用于 macos【参考方案5】:

转到您的 iTerm 首选项,选择“配置文件”,然后选择“键”并在“自然文本编辑”中更改您的预设

它应该在之后立即工作。

它适用于 iTerm 3.3.12 版

【讨论】:

我使用了 Terminal.app 兼容性,它工作正常。【参考方案6】:

在这里进行所有僵尸复活,但为了后代--

This post 让它按照你对我、Mb 和 Mf 的要求工作,同时保持 'Option Key as Meta' 设置,这样你就不会牺牲修饰符(我个人有使用 meta 的 vim 映射)。

总之,在您的全局键盘配置文件中,添加两个带有设置的新映射:

    密钥为十六进制代码,b 值为 62,f 值为 66 (man ascii) 修饰符作为选项 作为发送转义序列的操作,值 b 或 f

我仍然想念 Terminal.app 的唯一一件事是 Opt-Backspace 按字删除。还有其他解决方法,但我只是想训练自己使用Ctrl-w

【讨论】:

自此答案以来可能是一个新功能,但您可以映射一个全局键快捷方式以在按下Opt-Backspace 时发送Ctrl-w【参考方案7】:

在 iTerm2 中更容易。转到首选项->书签->键盘并选择选项发送+ESC。在 iTerm2 中,您可以分别配置左右选项键,因此如果您想要的话,请记住更改两者。 iTerm2 链接:http://sites.google.com/site/iterm2home/

【讨论】:

【参考方案8】:

转到书签 > 管理个人资料。然后选择 Keyboard Profiles > Global 并选择 Option Key as +ESC。

适用于 iTerm Build 0.9.5.0611 和 Build 0.9.6.20090415

【讨论】:

嗯。在我的机器上,这两个版本的设置似乎也被破坏了。但是,最新的 0.9.6.20090928 和 0.10 可以正常工作。【参考方案9】:

我也在***上找到了一些解决方案,只需转到键盘配置文件并在“全局”中更改“选项键为”+ESC

这对我来说非常有效 =) 顺便说一句,一些 iterm 补丁也存在看这里:http://www.emacswiki.org/emacs/EmacsForMacOS

【讨论】:

【参考方案10】:

我不了解 iTerm,但您可以在终端中执行此操作。说明可以在这里找到:

Emacs on Mac OS X Leopard key bindings

【讨论】:

谢谢。我知道我可以在终端中做到这一点。我只想在 iTerm 中达到同样的效果。顺便说一句,我正在寻找的是 bash shell 中的键绑定,而不是 emacs 中的键绑定。碰巧 bash shell 也使用 emacs 键绑定。【参考方案11】:

这对我有用:书签 > 管理配置文件 > 键盘配置文件 > 全局/xterm > 选项键为 +Esc。有了这个,我可以在 Midnight Commander 中使用 Option+Enter 并且当前选择的文件/目录名称显示在命令字符串中,正如它应该的那样。作为 Meta 的选项键对我不起作用。我的 iTerm 版本是 0.10。

【讨论】:

【参考方案12】:

我在 Meta + Left 或 Meta + Right 上苦苦挣扎。上下文是在 iTerm2 会话中使用的 Emacs 中的击键。

我为左选项键尝试了 Esc+ 和 Meta,但没有成功。我尝试使用和不使用十六进制映射。没有运气。

但后来我尝试了“使用 CSI u 报告修饰符”。 (Documentation here)。这让我可以在 Emacs 中使用 meta + Left 和 meta + right 键,这就是我在我的 Linux 机器上的行为。

【讨论】:

【参考方案13】:

尝试“导出 LANG=C”。我不是 emacs 专家,但我发现这使 OS X 上的 emacs 能够将 Option 键识别为 iTerm 中的 Meta 键,

【讨论】:

以上是关于使 iTerm 以与其他操作系统相同的方式翻译“元密钥”的主要内容,如果未能解决你的问题,请参考以下文章

如何以与在 Windows 资源管理器中“发送给邮件收件人”相同的方式以编程方式发送电子邮件?

计划任务是不是以与网页相同的方式加载 Application.cfc?

以与 `useMutation` 失败相同的方式使用 `useQuery` 钩子

如何以与 iPhoto 相同的方式订购 ALAssetsGroup

如何以与 VBScript 相同的方式解析命令行

以与 Bash 相同的方式转义文件名