Emacs lisp,简洁的键盘映射
问题描述:
在emacs中的邪恶模式之上,我写了一个扩展模式,它允许我在单个按键中插入数学和希腊语unicode字符。然而,代码如下所示(数百行):Emacs lisp,简洁的键盘映射
(define-key evil-unicode-state-map "a" "α")
(define-key evil-unicode-state-map "b" "β")
(define-key evil-unicode-state-map "g" "γ")
我想知道是否有切割出所有的样板的首选方式? 理想我想能写出像下面这样:
(setq evil-unicode-state-map
{"a" "α"
"b" "β"
"g" "γ"})
答
一种方式做到这一点是:
(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)))
编辑:(反映Ivan Andrus的评论)
如果my-evil-unicode-state-map
不在别处使用,
(dolist (key-def
'(("a" . "α")
("b" . "β")
("g" . "γ"))))
(define-key evil-unicode-state-map (car key-def) (cdr key-def)))
你也可以'let'-bind' my-evil-unicode-state-map',这样你就没有额外的全局变量了。 – 2012-08-08 07:07:13
@IvanAndrus谢谢你,你是对的。我只是希望它与问题中提供的模板尽可能相似。 – dkim 2012-08-08 07:45:15