7.Emacs进阶之模式

Posted 艾特 数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.Emacs进阶之模式相关的知识,希望对你有一定的参考价值。

前期的快速入门内容中,分6次介绍了Emacs的基本操作方法和基础概念,包括编辑、搜索、替换、窗格、窗口和缓冲区,了解了这些概念之后,就可以使用Emacs进行工作了。就我个人的实际体会来讲,在使用的过程中还是感觉很大的不方便,还不如windows的记事本简单实用。这是因为Emacs是一个复杂的、强大的编辑软件,可以进行复杂的设置,对于开发者而言完全可以作为IDE来使用,也就是说,Emacs还有大量的潜在功能需要我们去了解,还需要我们更加深入的学习。从今天起,我们就进入Emacs的进阶部分,进一步深入了解Emacs。我仔细翻阅了Emacs官方指南,觉得应当从模式(Mode)开始。

为了简便期间,对文中命令进行了缩写,其中:

·C代表CTRL键

·M代表ALT键。

 

模式是Emacs的一个重要概念。在快速入门中我们学习过缓冲区,所有通过Emacs打开的文件都会在缓冲区中显示,每个缓冲区怎么显示,能够使用什么样的命令,就是由模式来决定的。可以把一个模式理解为一组默认设置,包括Emacs的显示方式、编辑方式以及相关的命令集。Emacs每打开一个文件,每显示一个缓冲区,就会向该缓冲区赋予一个模式。模式又分为主要模式(Major Mode)和次要模式(Minor Mode)。

一、主要模式

每个缓冲区都有一个,且仅有一个主要模式。通常情况下,主要模式是Emacs根据打开的文件类型而设置的,也可以通过Emacs的配置文件设置一个默认的模式。

Emacs提供的主要模式有很多,例如:

text-mode:文本编辑模式,用于常规的文本编辑。

Info-edit-mode:帮助文件的编辑和显示模式。

C++-mode:C++文件的编辑和显示模式。

C-mode:C文件的编辑和显示模式。

不仅仅是这些,还有更加细化的,如:

dns-mode:DNS文件的编辑和显示模式。

image-mode:图片编辑和显示模式。

css-mode:css文件的编辑和显示模式。

还有比较特殊的shell模式,用于模仿控制台。

二、次要模式

次要模式与主要模式的主要区别有以下两点:

(一)与缓冲区的对应关系不同

一个缓冲区有且仅有一个主要模式。一个缓冲区可以有多个次要模式,理论上也可以没有次要模式(此种情况仅是理论上存在)。

(二)应用范围不同

主要模式仅在该缓冲区内生效。次要模式分为两类,一类是局部生效,即启用后仅对当前缓冲区有效;另一类是全局生效,即启用后对所有缓冲区生效。

三、模式相关命令

主要模式、次要模式都与M-x相关,要在缓冲区中应用模式只需要执行相关的模式命令,大部分的模式命令都以“mode”结尾。

四、shell模式

shell模式为我们提供了通过Emacs与操作系统交互的途径。

1.启动shell模式

在Emacs中执行M-x shell,默认会产生一个新窗格,在该窗格中出现命令行提示。 

我们可以看到,新窗格的名称默认为“*shell*”,主要模式是“Shell”。

2.在shell中操作

在该窗格中,可以像正常的控制台一样,执行cd、dir、pwd等操作系统命令。

3.思考题:如果改变模式会怎样?

在shell模式下执行“M-x text-mode”,就将当前模式变为text模式,这时就只能进行文本编辑,而无法执行操作系统命令了。


以上是关于7.Emacs进阶之模式的主要内容,如果未能解决你的问题,请参考以下文章

Python进阶:设计模式之迭代器模式

Java进阶篇设计模式之八 ----- 责任链模式和命令模式

Java进阶篇设计模式之二 ----- 工厂模式

Java进阶篇设计模式之九----- 解释器模式和迭代器模式

9.Emacs进阶之文本模式大纲模式

大型Java进阶专题设计模式之代理模式