emacs - 仅在主要模式下设置快捷键?

Dan*_*hoa 2 emacs

我想覆盖C-l并使用它M-x erase-buffer来模拟击球RET,只有当我在时m-shell-modeC-l应该是它的默认值,recenter-top-bottom,否则。我该怎么做?

Tre*_*son 5

不确定m-shell-mode是什么,但如果它是一个明确定义的主要模式,那么以下应该可以解决问题:

(require 'm-shell-mode)
(define-key m-shell-mode-map (kbd "C-l") 'erase-buffer)
Run Code Online (Sandbox Code Playgroud)

我可以建议一种替代绑定,它具有相同的视觉效果,但保留缓冲区内容(这很方便)。

(defun shell-clear-command (&optional a)
  "\"clear\" the screen"
  (interactive "P")
  (recenter (or a 0)))
(define-key m-shell-mode-map (kbd "C-l") 'shell-clear-command)
Run Code Online (Sandbox Code Playgroud)