键盘宏是我初学Emacs时就学过的 当时学过如何插入键盘宏:先正常记录一段键盘宏 然后用M-x name-last-kbd-macroM-x insert-kbd-macro插入类似这样的东西

1
2
(fset 'a
"\C-s<\C-m")

当时觉得好神奇啊 只能把它记录下来 后来 慢慢接触了Emacs Lisp 也理解这段代码的意思 fset设置了变量的函数 后面的字符串就是按键序列

今天突然想到 如果可以用kbd宏 不就可以手写键盘宏了么 想到了马上试一下 果然是可以的 比如这个

1
2
(fset 'select-hole-line
(kbd "C-a C-SPC C-e C-e"))

实现了选中整行 而且我只需要知道相应的键绑定就实现了相关功能