如何为GNU Emacs和Aquamacs定义密钥绑定?

如何为GNU Emacs和Aquamacs定义密钥绑定?,emacs,aquamacs,Emacs,Aquamacs,我将GNU Emacs用于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

我将GNU Emacs用于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文件

这是我从这里借来的:

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

defvar gnuemacs标志字符串与GNU emacs版本匹配 defvar aquamacs标志字符串与aquamacs emacs版本匹配 康德 aquamacs旗 定义键osx键模式映射kbd A-h“替换字符串” gnuemacs旗 定义键次要模式映射kbd s-h“替换字符串”
这是我从这里借来的:

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

defvar gnuemacs标志字符串与GNU emacs版本匹配 defvar aquamacs标志字符串与aquamacs emacs版本匹配 康德 aquamacs旗 定义键osx键模式映射kbd A-h“替换字符串” gnuemacs旗 定义键次要模式映射kbd s-h“替换字符串”
根据lawlist的建议,您甚至可以定义一个函数来执行此操作:

(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)

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

(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)

我不使用Aquamacs,但我相信Mac命令键是元键skim。看起来您应该能够全局设置键kbd M-h'replace-string。不,它们是两个独立的键。你考虑的是选项键。我不使用Aquamacs,但我相信Mac命令键是元键skim。看起来您应该能够全局设置键kbd M-h'replace-string。不,它们是两个独立的键。你想到了选项键。哇,太棒了!哇,太棒了!