Dan*_*Dan 5 keyboard emacs keyboard-shortcuts key-bindings
我正在尝试使用ErgoEmacs模式,看看我是否可以更舒适地使用Emacs.它的一些键绑定非常直观,但在很多情况下我不想直接替换默认值.
例如,在ErgoEmacs的导航快捷键结构的上下文中,Mh作为Ca的替代品是有意义的 - 但我希望能够同时使用两者,而不仅仅是Mh.我试过简单地复制命令:
;; Move to beginning/ending of line
(defconst ergoemacs-move-beginning-of-line-key (kbd "C-a")) ; original
(defconst ergoemacs-move-end-of-line-key (kbd "C-e")) ; original
(defconst ergoemacs-move-beginning-of-line-key (kbd "M-h")) ; ergoemacs
(defconst ergoemacs-move-end-of-line-key (kbd "M-H")) ; ergoemacs
Run Code Online (Sandbox Code Playgroud)
但是Emacs只是用第二个键覆盖了第一个键绑定.解决这个问题的最佳方法是什么?
事实证明,ErgoEmacs 使用两个文件来定义键绑定。一个是主ergoemacs-mode.el文件,另一个是您选择的特定键盘布局(例如ergoemacs-layout-us.el)。后一个文档创建一个常量,前一个文档使用该常量创建键绑定。因此,虽然我认为我正在复制键绑定,但实际上我正在更改随后用于该目的的常量。
解决方案:
在 ergomacs-mode.el 中:
;; Move to beginning/ending of line
(define-key ergoemacs-keymap ergoemacs-move-beginning-of-line-key 'move-beginning-of-line)
(define-key ergoemacs-keymap ergoemacs-move-end-of-line-key 'move-end-of-line)
(define-key ergoemacs-keymap ergoemacs-move-beginning-of-line-key2 'move-beginning-of-line) ; new
(define-key ergoemacs-keymap ergoemacs-move-end-of-line-key2 'move-end-of-line) ; new
Run Code Online (Sandbox Code Playgroud)
在 ergoemacs-layout-us.el 中:
;; Move to beginning/ending of line
(defconst ergoemacs-move-beginning-of-line-key (kbd "M-h"))
(defconst ergoemacs-move-end-of-line-key (kbd "M-H"))
(defconst ergoemacs-move-beginning-of-line-key2 (kbd "C-a")) ; new
(defconst ergoemacs-move-end-of-line-key2 (kbd "C-e")) ; new
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
950 次 |
最近记录: |