Emacs lisp,简洁的键盘图

Chr*_*isR 3 emacs elisp

就在Emacs邪恶的模式之上,我已经写了一个扩展模式,让我在一个单一的按键插入数学和希腊语Unicode字符.但是代码看起来像这样(数百行):

(define-key evil-unicode-state-map "a" "?")
(define-key evil-unicode-state-map "b" "?")
(define-key evil-unicode-state-map "g" "?")
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种切割所有样板的首选方法?理想情况下,我可以编写如下内容:

(setq evil-unicode-state-map
  {"a" "?"
   "b" "?"
   "g" "?"})
Run Code Online (Sandbox Code Playgroud)

dki*_*kim 7

一种方法是:

(setq my-evil-unicode-state-map
  '(("a" . "?")
    ("b" . "?")
    ("g" . "?")))

(dolist (key-def my-evil-unicode-state-map)
  (let ((key (car key-def)) (def (cdr key-def)))
    (define-key evil-unicode-state-map key def)))
Run Code Online (Sandbox Code Playgroud)

编辑:(反映伊万安德鲁斯的评论)

如果my-evil-unicode-state-map没有在其他地方使用,

(dolist (key-def
         '(("a" . "?")
           ("b" . "?")
           ("g" . "?"))))
  (define-key evil-unicode-state-map (car key-def) (cdr key-def)))
Run Code Online (Sandbox Code Playgroud)