在emacs上自定义键绑定

guo*_*oxx 1 emacs elisp

(defun foo ()
    message "hello")
Run Code Online (Sandbox Code Playgroud)

我想在shell模式下将函数foo绑定到键'ctl + l'可以有人给我看代码吗?

Nou*_*him 6

首先,您需要修复括号并使功能具有交互性.

(defun foo ()
  (interactive)
  (message "hello"))
Run Code Online (Sandbox Code Playgroud)

然后你需要可以将它绑定到一个键shell-mode.

(local-set-key (kbd "C-i") 'foo)
Run Code Online (Sandbox Code Playgroud)

要使其成为永久性的,添加一个函数来设置shell-mode-hook或在(最好)添加模式的键映射,如此

(eval-after-load "shell"
  '(define-key shell-mode-map (kbd "C-i") 'foo))
Run Code Online (Sandbox Code Playgroud)