我正在尝试像这样重新映射一些键:

(add-hook 'dired-mode-hook
  (lambda ()
    (require 'dired )
    (define-key dired-mode-map (kbd "M-o") nil)))
    (define-key dired-mode-map (kbd "M-o") 'other-window)
    ))

不幸的是,这似乎不起作用,我收到此错误
Symbol's value as variable is void: dired-mode-map

这很奇怪,因为我应该在可怕的情况下加载。我可能做错了什么?

最佳答案

原始海报在这一点上有两 (2) 个 [双关语意] 右括号:(define-key dired-mode-map (kbd "M-o") nil)))——即,需要消除该行末尾的两 (2) 个右括号。此外,我没有看到在重新定义它之前将绑定(bind)设置为 nil 的理由。

以下是实现相同目标的另一种方式。根据需要在 progn 语句之后添加任何其他键绑定(bind)。

(eval-after-load "dired" '(progn
  (define-key dired-mode-map (kbd "M-o") 'other-window) ))

10-06 04:27