![如何在 emacs 中定义新命令](https://linux22.com/image/1252211/%E5%A6%82%E4%BD%95%E5%9C%A8%20emacs%20%E4%B8%AD%E5%AE%9A%E4%B9%89%E6%96%B0%E5%91%BD%E4%BB%A4.png)
我总是忘记 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?