【问题标题】:how to define key bindings for both GNU Emacs and Aquamacs?如何为 GNU Emacs 和 Aquamacs 定义键绑定?
【发布时间】:2014-09-02 18:19:29
【问题描述】:

我同时使用 GNU Emacs for OSX 和 Aquamacs。我喜欢定义使用 Mac 命令键 的键绑定。

不幸的是,每个指定 键的语法都不同。

在 Aquamacs 中,它看起来像这样:

(define-key osx-key-mode-map (kbd "A-h") 'replace-string)

在 GNU Emacs for OSX 中,它看起来像这样:

(define-key key-minor-mode-map (kbd "s-h") 'replace-string)

有没有办法以 GNU Emacs 和 Aquamacs 都能理解的方式指定这些键绑定,这样我就不必在每次添加新的键绑定时维护和更新两个单独的 .emacs 文件?

【问题讨论】:

  • 我不使用 Aquamacs,但我相信 Mac 命令键 元键 (skim this tutorial)。看来你应该可以(global-set-key (kbd "M-h") 'replace-string)
  • 不,它们是两个独立的键。您正在考虑选项键。

标签: emacs aquamacs


【解决方案1】:

根据法律列表的建议,您甚至可以定义一个函数来执行此操作:

(defvar gnuemacs-flag (string-match "GNU" (emacs-version)))
(defvar aquamacs-flag (string-match "Aquamacs" (emacs-version)))

(defun define-hyper-key (key fun)
  (cond
   (aquamacs-flag
    (define-key osx-key-mode-map (kbd (concat "A-" key)) fun))
   (gnuemacs-flag
    (define-key key-minor-mode-map (kbd (concat "s-" key)) fun))))

;; The aquamacs/gnuemacs keybindings:
(define-hyper-key "h" 'replace-string)

【讨论】:

  • 哇,太棒了!
【解决方案2】:

这是我从这里借来的:http://www.hulubei.net/tudor/configuration/download/.emacs

我还没有测试过代码,但它看起来应该可以工作。使用这种类型的设置,原始发布者可以只维护一个.emacs 文件和/或加载首选项文件。

(defvar gnuemacs-flag (string-match "GNU" (emacs-version)))

(defvar aquamacs-flag (string-match "Aquamacs" (emacs-version)))

(cond
  (aquamacs-flag
    (define-key osx-key-mode-map (kbd "A-h") 'replace-string))
  (gnuemacs-flag
    (define-key key-minor-mode-map (kbd "s-h") 'replace-string)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    相关资源
    最近更新 更多