有关emacs模式的一些问题

时间:2015-08-09 17:44:23

标签: emacs

众所周知,模式在emacs中非常重要。但我觉得我不太清楚如何设置它。例如,我经常在.emacs文件中看到类似(*** - 模式1)或(*** - 模式)的内容。一些教程还说可以通过M-x ***模式设置模式。你能告诉我他们之间的差异以及如何使用它们吗?谢谢!

1 个答案:

答案 0 :(得分:2)

Lisp function是一段代码,它声明了稍后要执行的另一段代码的名称。

(defun hello ()
   (message "Hiya!"))

现在,您可以从Lisp中的任何其他位置调用命名代码。

(hello)

此时message表单才会执行。

许多Lisp函数包含一个interactive形式,它指定了交互调用时它们应该如何表现(例如,它应该提示参数,还是使用光标或鼠标位置作为参数等)。可以使用M-x和函数名称调用那些。

major mode指定一个函数,它设置一些变量来专门控制Emacs的行为。例如,M-x text-mode设置了一个(非常基本的)自动换行和光标移动方式,适用于文本文件。当您处于文本模式时,您不能处于C ++模式,Lisp模式或基本模式。这些是定义适合编辑其他类型文本的不同或附加功能的其他主要模式。

因为主要模式是独占的,所以它通常是一个不带任何参数的函数。因此,要将当前缓冲区置于文本模式,Lisp代码就是

(text-mode)
相反,

Minor modes,指定独立于主要模式的其他行为。例如,覆盖模式在其他文本之前插入文本时指定不同的行为 - 通常,Emacs会向前推送任何现有文本,但是当覆盖模式处于活动状态时,光标前面的现有文本将在您键入时被替换。

您可以随时激活多个次要模式 - 您可以在文本模式下同时激活flyspell(键入时拼写检查),工具栏模式,菜单栏模式和行号模式和覆盖模式。

因此,对于次要模式,常见的(但不是通用的)约定是执行切换。当您处于工具栏模式时,M-x toolbar-mode将禁用此次要模式。要明确禁用该模式,请将其传递给负数字参数;

(toolbar-mode -1)

如果没有参数,代码将切换 - 结果将取决于模式是否已经激活。

(如评论中所述,这在Emacs 24中有所改变;我描述的是历史行为。)

相关问题