我使用的是 OSX Lion
我在 Terminal.app 中运行 emacs
我希望 command-x 产生 M-x (一般来说,command -> M)
我尝试了以下解决方案,但它们不是我想要的:
在系统偏好设置中将命令全局映射到Meta
仅在 Terminal.app 中将选项映射到 Meta
我想要的只是在 Terminal.app 内部(或仅在 emacs 内部),将命令键绑定到元。我如何实现这一目标?
fwiw - iterm2 需要额外注意才能使 cmd 映射到元并与其他应用程序良好地配合。 (cmd-tab 行为、cmd-space (quicksilver) 等)这是我的配置,它偏向于左手 cmd-tab 操作等。
在iterm2内
这会导致使用右手cmd来执行某些本地iterm任务,但在具有不同键绑定的应用程序之间切换等,会执行通常的左手操作,并且重新训练我的肌肉记忆被最小化。
首先,在终端的首选项中,在“设置”选项卡的“键盘”子选项卡上,有一个复选框“使用选项作为元键”。 这不完全是您所要求的,但它是内置的。
我认为 Cocoa 键绑定系统可能会有所帮助,但根据我的搜索,它故意不允许重新映射命令。 此页面有很多关于Cocoa键绑定和文本默认值的可定制性的信息。
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+”,那就太好了。
我使用
cmd-key-happy
(https://github.com/aim-stuff/cmd-key-happy),它允许您针对特定应用程序交换 alt
和 commmand
键。
因此,在 Terminal.app 中,您可以按预期使用所有元修饰符,而 Mac 特定命令(复制、粘贴、关闭、新建)则使用
alt
。
您为何坚持使用 Terminal.app? 只需安装 iterm2 并继续生活。