我该如何修改IntelliJ中Emacs键位映射中的控制/选项/命令键映射?

3

默认情况下,Mac OS X上的GNU Emacs使用控制键作为CTRL,使用命令键作为META。这让我很烦恼,因为我的MacBook Pro只有一个左边的控制键,而我习惯于键盘两侧都有控制键。

通过修改变量mac-control-modifiermac-command-modifiermac-option-modifier,我成功地将命令键作为CTRL,将选项键作为META

如何在IntelliJ IDEA中实现同样的操作呢?选择“Emacs”作为按键映射很容易,但我找不到任何方法来进行类似的CTRLMETA重新映射。我知道我可以在操作系统中全局重新映射这些键,但我不想这么做。我也知道我可以进入每个操作并逐个修改它们,但这似乎是一个不好的解决方案。

1个回答

9

这可能不是最简单的解决方案,但你可以打开resources.jar (/Applications/IntelliJIdea.app/lib/resources.jar 在MacOS上),找到Keymap_Emacs.xml文件(在idea目录中),复制并修改它。

然后,您可以在IntelliJ中创建一个新的keymap,以便更新它的内容(~/Library/Preferences/IntelliJIdea90/keymaps 在MacOS上)。

这样,您就可以更改所有键位映射而不必逐个更改每个操作。


谢谢 Colin,这很好用(而且相当容易)。我想补充一点,就是直接复制(打包的)Keymap_Emacs.xml 是行不通的;Idea 9.0 在启动时会抛出一个键位映射错误。相反,我最终做的是在 Idea 的设置中打开 Keymap 部分,选择 Emacs 键位映射,点击 Copy,然后进行一次修改,再应用更改。然后我打开了在 ~/Library/Preferences/IntelliJIdea90/keymaps 中生成的键位映射 xml,并执行了我的搜索和替换 controlmeta 并保存它。一切都完美地运作。 - Robert Campbell
用户键位映射的格式已更改。在IntelliJ 14中,它不再是原始副本,而是最小化的,根元素上有一个父属性。内部唯一出现的<action/>是用户覆盖的操作。因此,在IntelliJ中创建自定义键位映射后,您需要将操作元素从打包的Keymap_Emacs.xml复制到自定义键位映射中。之后它可以正常工作。 - jgibson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接