如何重新定义“迷你缓冲区”模式映射内的键?

2023-11-27

当在多个命令中接受正则表达式并提供 C-p / C-n 历史导航时,我试图重新定义用于导航历史记录的键。除了 C-p / C-n 之外,我还想使用其他键。例如当使用occur or 替换正则表达式、C-p 和 C-n 可用于转到上一个和下一个元素。

我尝试了几件事但无法使其发挥作用。我想我错过了这里的“大局”。

我需要修改哪个模式映射、何时以及如何修改?我尝试的一切都失败了。

P.S:请注意,我有自己的次要模式,其中包含我的所有键盘映射,如此处建议的那样。


我假设你只需要minibuffer-local-map。使用先前分配给该键映射的键的后续定义将胜过先前的定义。要禁用先前的键分配,只需创建一个新定义并将最后一部分设置为nil代替'function-name.

(define-key minibuffer-local-map (kbd "<f6>") 'help-for-help)

这是 Emacs Trunk 的摘录.../lisp/bindings.el:

(let ((map minibuffer-local-map))
  (define-key map "\en"   'next-history-element)
  (define-key map [next]  'next-history-element)
  (define-key map [down]  'next-history-element)
  (define-key map [XF86Forward] 'next-history-element)
  (define-key map "\ep"   'previous-history-element)
  (define-key map [prior] 'previous-history-element)
  (define-key map [up]    'previous-history-element)
  (define-key map [XF86Back] 'previous-history-element)
  (define-key map "\es"   'next-matching-history-element)
  (define-key map "\er"   'previous-matching-history-element)
  ;; Override the global binding (which calls indent-relative via
  ;; indent-for-tab-command).  The alignment that indent-relative tries to
  ;; do doesn't make much sense here since the prompt messes it up.
  (define-key map "\t"    'self-insert-command)
  (define-key map [C-tab] 'file-cache-minibuffer-complete))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重新定义“迷你缓冲区”模式映射内的键? 的相关文章

随机推荐