OSX + Terminal.app + Emacs + 让命令键作为元操作

问题描述 投票:0回答:5

我使用的是 OSX Lion

我在 Terminal.app 中运行 emacs

我希望 command-x 产生 M-x (一般来说,command -> M)

我尝试了以下解决方案,但它们不是我想要的:

我想要的只是在 Terminal.app 内部(或仅在 emacs 内部),将命令键绑定到元。我如何实现这一目标?

macos terminal emacs command
5个回答
10
投票

fwiw - iterm2 需要额外注意才能使 cmd 映射到元并与其他应用程序良好地配合。 (cmd-tab 行为、cmd-space (quicksilver) 等)这是我的配置,它偏向于左手 cmd-tab 操作等。

在iterm2内

  • (首选项 >> 键选项卡)左 cmd 需要重新映射到左选项
  • 全局快捷键将以下设置设置为“不重新映射修饰符”
    • cmd-space(使quicksilver正常工作)
    • ctl-cmd-space(使我的全焦点绑定工作)
    • cmd-` - 循环窗口
    • cmd- ->(右箭头)使选项卡循环正常工作
  • (首选项 >> 配置文件选项卡 >> 键子选项卡)我将左侧选项键映射到转义。 这为大多数期望 shell 应用程序的元数据提供了预期的行为

这会导致使用右手cmd来执行某些本地iterm任务,但在具有不同键绑定的应用程序之间切换等,会执行通常的左手操作,并且重新训练我的肌肉记忆被最小化。


4
投票

首先,在终端的首选项中,在“设置”选项卡的“键盘”子选项卡上,有一个复选框“使用选项作为元键”。 这不完全是您所要求的,但它是内置的。

我认为 Cocoa 键绑定系统可能会有所帮助,但根据我的搜索,它故意不允许重新映射命令。 此页面有很多关于Cocoa键绑定和文本默认值的可定制性的信息。


4
投票

FWIW:我找到了另一种更适合我的方法来完成此任务(这是在 iTerm2 中)。

我希望 emacs 在终端中的行为与在窗口中的行为相同。我通过以下代码片段将我的 emacs 设置为使用命令键作为元键:

;;osx keys
(setq mac-option-key-is-meta nil)
(setq mac-command-key-is-meta t)
(setq mac-command-modifier 'meta)
(setq mac-option-modifier 'alt)

因此,为了让我的命令键表现得像 iTerm2 中的元键,我进入首选项->配置文件->->键并添加了新键。唯一的问题是你必须分别为每个键执行此操作,但你可以说,例如,

keyboard shortcut: <type command-p>
action: send escape sequence
Esc+: p

因此,我对最常用的元+键执行了此操作。如果有另一组单选按钮(例如选项/alt),您可以在其中说“命令键的作用类似于 Esc+”,那就太好了。


3
投票

我使用

cmd-key-happy
(https://github.com/aim-stuff/cmd-key-happy),它允许您针对特定应用程序交换
alt
commmand
键。

因此,在 Terminal.app 中,您可以按预期使用所有元修饰符,而 Mac 特定命令(复制、粘贴、关闭、新建)则使用

alt


-2
投票

您为何坚持使用 Terminal.app? 只需安装 iterm2 并继续生活。

© www.soinside.com 2019 - 2024. All rights reserved.