最近想新增一些快捷键,但是发现很难生效,看了下,都是被别的el的快捷键覆盖了,因此来请教下大家
(global-set-key (kbd "s-e") 'move-end-of-line)
(global-set-key (kbd "s-a") 'move-beginning-of-line)
(global-set-key (kbd "s-x") 'nil)
(global-set-key (kbd "s-x") 'helm-M-x )
例如上面的s-x
绑定helm-M-x
, 谢谢大家!
你可以把自己的键都定义在一个minor mode下面,例如
(defvar my-keys-minor-mode-map (make-sparse-keymap) "my-keys-minor-mode keymap.")
(define-key my-keys-minor-mode-map (kbd "s-e") 'move-end-of-line)
最后让这个minor mode生效即可
(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-minor-mode 1)
或者可以用bind-key。作为use-package的依赖,覆盖率爆表。bind-key可以保证快捷键不被覆盖
显然你用了evil,那么要(define-key evil-normal-state-map (kbd "s-x") 'some-fun)
,evil的实现我不清楚,但不管是用的什么map,肯定比global-map的优先级高。keymap优先级大致是minor-mode-map>major-mode-map>global。stackexchange上的类似问题
谢谢大家的解答,试了下minor mode的方法,但是貌似没有效果,不知道为什么,代码如下
(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-minor-mode 1)
(defvar my-keys-minor-mode-map (make-sparse-keymap) "my-keys-minor-mode keymap.")
(define-key my-keys-minor-mode-map (kbd "s-x") 'helm-M-x)
(define-key my-keys-minor-mode-map (kbd "s-a") 'move-beginning-of-line)
(define-key my-keys-minor-mode-map (kbd "s-e") 'move-end-of-line)
这些快捷键用use-packege
来绑定感觉也不太合适,不知道有没有更好的方法?
试试这个
(global-unset-key (kbd "s-e"))
(global-set-key (kbd "s-e") 'move-end-of-line)
(global-unset-key (kbd "s-a"))
(global-set-key (kbd "s-a") 'move-beginning-of-line)
(global-unset-key (kbd "s-x"))
(global-set-key (kbd "s-x") 'helm-M-x )
可以用use-package
中的bind-key*
’,不会被其他minor mode 的快捷键覆盖!