Emacs 用一个键盘组合执行两个功能
我正试图让Emacs 用一个键盘组合执行两个功能,emacs,elisp,Emacs,Elisp,我正试图让C-映射到移动行尾然后换行和缩进 在我的.emacs中,我一直在玩弄以下内容: (global-set-key (kbd "C-<return>") '(progn (move-end-of-line) (newline-and-indent))) (全局设置键(kbd“C-”)(progn(移动行尾)(换行和缩进))) 及 (defun c-ret() '(移动行尾换行和缩进)) (全局设置键(kbd“C-”)C-ret) 但两者都不起作用 指针?您正在引用命令 这
C-
映射到移动行尾
然后换行和缩进
在我的.emacs中,我一直在玩弄以下内容:
(global-set-key (kbd "C-<return>") '(progn (move-end-of-line) (newline-and-indent)))
(全局设置键(kbd“C-”)(progn(移动行尾)(换行和缩进)))
及
(defun c-ret()
'(移动行尾换行和缩进))
(全局设置键(kbd“C-”)C-ret)
但两者都不起作用
指针?您正在引用命令 这意味着他们不会被处决。您还需要(交互式)向emacs表示它可以从键盘调用 然后,您需要将参数设置为正确的函数 此外,我认为你对退货的命名是错误的 你在这里的基本误解是知道eLisp是如何工作的。没关系,这是一种神秘的编程语言 “a.k.a QUOTE实际上是一个特定于Lisp的特殊指令。它说,“不要计算我后面的内容”,并返回未计算的参数 所以“(foobar)被分解为(QUOTE(foobar)),它返回(foobar) 试试这个:
(defun c-ret()
(interactive)
(move-end-of-line nil)
(newline-and-indent))
(global-set-key (kbd "C-RET") 'c-ret)
您无需自己编写任何代码就可以做到这一点。有关将命令序列捕获为键盘宏、命名并保存在.emacs中的说明,请参阅。然后,您可以给新命令一个您选择的键绑定,例如使用
(全局设置键(kbd“C-C i”)'新命令名)
如果您想要一行解决方案,这也可以:
(global-set-key (kbd "C-<return>") (lambda () (interactive) (move-end-of-line nil) (newline-and-indent)))
(全局设置键(kbd“C-”)(lambda()(交互式)(移动行末nil)(换行和缩进)))
(global-set-key (kbd "C-<return>") (lambda () (interactive) (move-end-of-line nil) (newline-and-indent)))