在查找文件中使用Emacs global-set-key

时间:2014-06-03 14:10:00

标签: emacs elisp key-bindings

在我的init.el文件中,我有这个:

(global-set-key "\M-n" (lambda () (interactive) (insert "~")))

这允许我在Mac上使用 Alt-n 来生成~字符。它在缓冲区等中工作正常,但当我尝试在find-file中使用它时,我得到

  

“历史结束无默认可用”。

C-h k 显示 M-n 实际上是在调用:

(lambda nil (interactive) (insert "~"))

为什么这不适用于find-file

1 个答案:

答案 0 :(得分:2)

全局键绑定被本地(即主模式)键绑定覆盖,这些键绑定被次模式绑定覆盖,这些绑定被......重写,有很多级别密钥绑定。

在这种情况下,您的全局绑定会被迷你缓冲区键映射绑定覆盖。

在作为本地地图的迷你缓冲区完成键盘映射中,M-n绑定到next-history-element。如果您希望将此类地图中的M-n绑定到其他地图,则需要将其绑定。例如:

(define-key minibuffer-local-completion-map "\M-n" 'your-command)

根据您的Emacs版本,有几个迷你缓冲区完成键盘图。两个主要的是minibuffer-local-completion-mapminibuffer-local-must-match-map