我同时使用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文件?
答案 0 :(得分: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)))
答案 1 :(得分:2)
根据立法建议,您甚至可以定义一个功能来执行此操作:
(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)