首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全局覆盖Emacs中的键绑定

全局覆盖Emacs中的键绑定
EN

Stack Overflow用户
提问于 2009-03-25 20:59:41
回答 9查看 21.6K关注 0票数 105

如何设置全局覆盖并优先于该键的所有其他绑定的键绑定?我想覆盖所有的主/次模式映射,并确保我的绑定始终有效。

这当然不起作用:

代码语言:javascript
复制
(global-set-key "\C-i" 'some-function)

它在text-mode中工作,但当我使用lisp-mode时,C-i被重新绑定到lisp-indent-line

我可以分别在lisp-mode和其他所有模式中遍历和覆盖此绑定,但必须有一种更简单的方法。每次我为一个新的文件类型安装一个新的模式时,我必须回去检查,以确保我所有的键绑定都没有被新的模式覆盖。

我之所以这样做,是因为我想模仿我已经从其他编辑器那里学到并根深蒂固的绑定。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-03-25 21:36:11

我对所有的"override“键绑定都使用了次要模式:

代码语言:javascript
复制
(defvar my-keys-minor-mode-map
  (let ((map (make-sparse-keymap)))
    (define-key map (kbd "C-i") 'some-function)
    map)
  "my-keys-minor-mode keymap.")

(define-minor-mode my-keys-minor-mode
  "A minor mode so that my key settings override annoying major modes."
  :init-value t
  :lighter " my-keys")

(my-keys-minor-mode 1)

这还有一个额外的好处,那就是可以一下子关闭我的所有修改(只需禁用次要模式),以防其他人在操作键盘,或者我需要查看默认的键绑定是做什么的。

请注意,您可能需要在minibuffer中将其关闭:

代码语言:javascript
复制
(defun my-minibuffer-setup-hook ()
  (my-keys-minor-mode 0))

(add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-hook)
票数 155
EN

Stack Overflow用户

发布于 2011-03-17 22:56:12

作为对scottfrazer's answer的补充,我编写了以下代码,以便我的键绑定保持优先级,即使随后加载的库引入了它们自己的新键映射。

因为键映射可以在编译时生成,所以load似乎是做这件事的最佳位置。

代码语言:javascript
复制
(add-hook 'after-load-functions 'my-keys-have-priority)

(defun my-keys-have-priority (_file)
  "Try to ensure that my keybindings retain priority over other minor modes.

Called via the `after-load-functions' special hook."
  (unless (eq (caar minor-mode-map-alist) 'my-keys-minor-mode)
    (let ((mykeys (assq 'my-keys-minor-mode minor-mode-map-alist)))
      (assq-delete-all 'my-keys-minor-mode minor-mode-map-alist)
      (add-to-list 'minor-mode-map-alist mykeys))))
票数 31
EN

Stack Overflow用户

发布于 2014-12-12 18:39:42

安装use-package,eval,你就完成了:

代码语言:javascript
复制
(require 'bind-key)
(bind-key* "C-i" 'some-function)
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/683425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档