我正在尝试映射c-u m-x indent-pp-sexp
到单个键,例如 F5,这样使用 Emacs 就不会侵 eclipse 我的指纹。
我使用(global-set-key (kbd "C-u M-x indent-pp-sexp") "<f5>")
但我收到以下错误:
global-set-key: Key sequence C-u M-x i n d e n t - p p - s e x p starts with non-prefix key C-u
编辑
使用这个 lambda 函数 (global-set-key (kbd "<f5>") (lambda (interactive) (universal-argument) (indent-pp-sexp t)))
出现错误:
recursive-edit: Wrong type argument: commandp, (lambda (interactive) (universal-argument) (indent-pp-sexp t))
奇怪,因为 univeral-argument
不带任何参数,且 indent-pp-sexp
采用 bool 值
最佳答案
您的参数方式是错误的,并且您将键绑定(bind)到函数,而不是其他键序列。也许您真的在寻找named macro ;或者你可以编写一些实际的 Lisp 并将其绑定(bind)到 F5:
(global-set-key (kbd "<f5>")
(function (lambda () (interactive) (indent-pp-sexp t) )) )
调用表单中参数的存在似乎足以选择前缀参数功能。
关于emacs 将多个击键和命令映射到一个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16592192/