【问题标题】:Emacs global-set-key in find-file查找文件中的 Emacs 全局设置键
【发布时间】:2014-06-03 14:09:59
【问题描述】:
在我的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?
【问题讨论】:
标签:
emacs
elisp
key-bindings
【解决方案1】:
全局键绑定被本地(即主要模式)键绑定覆盖,这些键绑定被次要模式绑定覆盖,这些绑定被...... IOW,有很多级别键绑定。
在这种情况下,您的全局绑定会被 minibuffer 键映射绑定覆盖。
在本地映射的 minibuffer 完成键映射中,M-n 绑定到 next-history-element。如果您希望这样的地图中的M-n 绑定到其他东西,那么您需要绑定它。例如:
(define-key minibuffer-local-completion-map "\M-n" 'your-command)
根据您的 Emacs 版本,有几个 minibuffer 完成键映射。两个主要是minibuffer-local-completion-map 和minibuffer-local-must-match-map。