【问题标题】:Emacs: how to bind action to mac Option (⌥) + arrow key combinations?Emacs:如何将动作绑定到 mac Option (⌥) + 箭头组合键?
【发布时间】:2023-05-24 00:29:02
【问题描述】:

我在来自mac portsOS X 上使用Emacs。默认情况下,我将 Ctrl 作为 Control 键,将 命令作为 Meta 键。 Thogh,这非常方便,我错过了通过按 M-arrrow key 将光标向后/向前移动一个单词的可能性,即 + 向前移动一个单词。我真正想要的:

  • +向后移动1个单词
  • +前移1个字
  • + 移动到该行的第一个非空白字符
  • +移动到行尾
  • 而在所有其他情况下 Meta

我尝试在我的映射中使用(kbd "A-left")"\A-left",但这对我不起作用。所以,这里有两个问题:

更新

  1. 如何为 Option 键创建映射?
(setq mac-option-modifier 'hyper)
;; now you can easily use mappings with Hyper key modifier
  1. 如何创建到箭头键的映射?
(define-key evil-insert-state-map (kbd "<H-left>") 'left-word)
;; defines Hyper+left arrow combination

【问题讨论】:

  • 如果你输入C-h c,然后输入⌥ ←,你会得到什么?
  • &lt;A-left&gt; is undefined

标签: macos emacs macports keymapping keymaps


【解决方案1】:

我没有 Mac。您可以尝试按照页面底部的说明进行操作吗http://ergoemacs.org/emacs/emacs_hyper_super_keys.html

您可以使用C-h c 来描述键绑定,通过键入它还会返回您必须作为参数提供给kbd 的字符串。

【讨论】:

  • 超级骗子!我已经将我的⌥ Option 键映射到Hyper,之后很容易定义我想要的键。 ``` (setq mac-option-modifier 'hyper) (define-key evil-insert-state-map (kbd "") 'left-word) ```
  • 我要做的最棘手的事情是找出正确的语法来描述精确的组合,例如&lt;H-left&gt;H-left 对我不起作用。
  • 我是个骗子。实际上,这个&lt;H-left&gt; 确实有效,而&lt;H&gt;&lt;left&gt; 无效!