2017-04-14 50 views
0

我试图设置一些自定义绑定并遇到了一个令人费解的问题,我无法重新绑定C-M-q或完全解除绑定。我在重新绑定其他键方面没有问题,所以我不知道C-M-q的特殊之处。以下是我在.emacs文件中尝试过的一些内容。不能在emacs中重新绑定C-M-q

;;(global-set-key (kbd "C-M-q") nil) 
;;(global-unset-key (kbd "C-M-q")) 
;;(global-set-key (kbd "C-M-q") 'shrink-window-horizontally) 
(global-set-key (kbd "C-M-y") 'shrink-window-horizontally) 
(global-set-key (kbd "C-M-w") 'shrink-window) 
(global-set-key (kbd "C-M-e") 'enlarge-window) 
(global-set-key (kbd "C-M-r") 'enlarge-window-horizontally) 

无论我怎么努力,这架CH -k命令说CMQ势必

CMQ运行命令缩进-PP-S曝光,这是一个互动的 编译Lisp函数在`lisp- mode.el”。

它被绑定到C-M-q。

回答

1

全球键盘映射是优先级最低的键盘布局,而这种结合是在本地(主要模式)键盘映射为你正在看(这是一个口齿不清缓冲器)的缓冲,所以Emacs的永远看到您的全局键盘映射变化,因为它已经找到了一个绑定,然后得到那么远。

具体而言,此绑定位于lisp-mode-shared-map(多个lisp模式的父键映射)中,这是在prog-mode-map中映射更通用的绑定。其他编程模式对于这个键有它们自己的绑定,以确保它总会有某种“缩进表达”行为。

因此,我会建议你不要打开这个绑定,因为它有一个标准的使用。如果你真的想这样做,那么你应该看看Globally override key binding in Emacs

Emacs有键盘映射的许多层,并有​​系统是如何工作的想法是很重要的,所以我强烈建议抽空阅读关于这个问题的以下文章:

https://www.masteringemacs.org/article/mastering-key-bindings-emacs