如何在 emacs 中定义新命令

如何在 emacs 中定义新命令

我总是忘记 emacs 中“全选”的术语,所以我想添加一个新的 emacs 命令,以便我可以输入 Mx select-all RET 并让它运行 mark-whole-buffer。

我尝试将其添加到我的 .emacs 文件中:

(defun select-all () (mark-whole-buffer))

或这个:

(defun select-all () (interactive) (mark-whole-buffer))

但是这些似乎没有将名称放在正确的“命名空间”中以通过 Mx 访问,我如何将它们放入正确的命名空间中?

谢谢,-Shawn

答案1

(interactive)告诉 Emacs 该函数是一个命令,即该函数可以绑定到一个键并用 执行M-x。所以

(defun select-all ()
  (interactive)
  (mark-whole-buffer))

应该可以工作(但(defun select-all () (mark-whole-buffer))不会)。您是否重新启动了 Emacs 或使用C-M-x( eval-defun) 评估了定义?C-h f select-all RET显示了什么?(帮助缓冲区应该以“全选是交互式的”开头。)

这里有一个更简单的替代方案

(defalias 'select-all 'mark-whole-buffer)

答案2

嗯,这已经内置了:

M-x mark-whole-buffer

势必

C-x h

但是,为了通过编写某些内容来获得您想要的东西,您的第二个实现对我来说很好,我可以通过键入来获得它M-x

答案3

具有交互功能的那个看起来是正确的,并且对我有用......您是否记得在定义它之后重新加载您的.emacs?

相关内容