<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Emacs</id>
	<title>Emacs - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Emacs"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Emacs&amp;action=history"/>
	<updated>2026-07-15T15:59:37Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Emacs&amp;diff=523&amp;oldid=prev</id>
		<title>imported&gt;沈澄心：​Æ /* 历史 */</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Emacs&amp;diff=523&amp;oldid=prev"/>
		<updated>2025-02-22T12:14:09Z</updated>

		<summary type="html">&lt;p&gt;Æ &lt;span class=&quot;autocomment&quot;&gt;历史&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
|G2=FL&lt;br /&gt;
|1=zh-hans:文本编辑器; zh-hant:純文字編輯器;&lt;br /&gt;
|2=zh-hans:宏; zh-hant:巨集;&lt;br /&gt;
|3=zh-hans:扩展性; zh-hant:擴充性;&lt;br /&gt;
|4=zh-hans:编程; zh-hant:程設;&lt;br /&gt;
|5=zh-hans:扩展; zh-hant:擴充套件;&lt;br /&gt;
|6=zh-hans:屏幕; zh-hant:螢幕;&lt;br /&gt;
|7=zh-hans:击键; zh-hant:輸入;&lt;br /&gt;
|8=zh-hans:程序; zh-hant:程式;&lt;br /&gt;
|9=zh-hans:扩展语言; zh-hant:擴充語言;&lt;br /&gt;
|10=zh-hans:代码; zh-hant:原始碼;&lt;br /&gt;
|11=zh-hans:斯托曼; zh-hant:史托曼;&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox_Software&lt;br /&gt;
|name = GNU Emacs&lt;br /&gt;
|logo = Emacs 512.png&lt;br /&gt;
|logo size = 32px&lt;br /&gt;
|screenshot = GNU Emacs 23.1.1.png&lt;br /&gt;
|screenshot size = 250px&lt;br /&gt;
|caption = GNU Emacs 23.1.1，首个在[[X Window系統]]上支持-{zh-tw:[[反鋸齒]];zh-cn:[[抗锯齿]]}-的版本。&lt;br /&gt;
|author = -{zh-tw:[[理查·史托曼]];zh-cn:[[理查德·斯托曼]]}-和[[蓋伊·史提爾二世]]&lt;br /&gt;
|developer = [[GNU計劃]]&lt;br /&gt;
|operating_system = [[GNU/Linux]]、[[FreeBSD]]、[[AIX]] 4.3.3或更高、[[macOS]]、[[MS-DOS]]、[[Windows]]、[[NetBSD]]、[[OpenBSD]]、[[Solaris]]等&lt;br /&gt;
|genre = [[文本编辑器]]&lt;br /&gt;
|latest_release_version = {{wikidata|property|reference|edit|P348}}&lt;br /&gt;
|latest_release_date = {{wikidata|qualifier|P348|P577}}&lt;br /&gt;
|latest_preview_version = &lt;br /&gt;
|latest_preview_date = &lt;br /&gt;
|license = [[GNU通用公共许可证]]&lt;br /&gt;
|website = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Emacs&amp;#039;&amp;#039;&amp;#039;（{{IPAc-en|ˈ|iː|m|æ|k|s}}，源自&amp;#039;&amp;#039;&amp;#039;E&amp;#039;&amp;#039;&amp;#039;ditor &amp;#039;&amp;#039;&amp;#039;MAC&amp;#039;&amp;#039;&amp;#039;ro&amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039;，[[宏]]编辑器），是一个[[文本编辑器]]家族，它具有可扩展性，使用者以[[程序员]]和其他以技术工作为主的计算机用户為主。最初由[[理查德·斯托曼]]於1975年在[[MIT]]协同[[蓋伊·史提爾二世]]共同完成。这一创意的灵感来源于TECO宏编辑器TECMAC和TMACS，它们是由[[蓋伊·史提爾二世]]、{{維基數據鏈接|Q5237671}}、[[李察·D·格連布勒|李察·格連布勒]]、Charles Frankston等人编写的宏文本编辑器。&lt;br /&gt;
&lt;br /&gt;
自诞生以来，Emacs演化出了众多分支，其中使用最广泛的两种分别是：1984年由[[理查·斯托曼]]发起并由他维护至2008年的&amp;#039;&amp;#039;&amp;#039;GNU Emacs&amp;#039;&amp;#039;&amp;#039;，以及1991年发起的[[XEmacs]]。XEmacs是GNU Emacs的分支，至今仍保持着相当的兼容性。它们都使用了[[Emacs Lisp]]这种有着极强扩展性的[[编程语言]]，从而实现了包括[[编程]]、[[编译]]乃至网络浏览等等功能的扩展。&lt;br /&gt;
&lt;br /&gt;
在[[Unix]]文化裡，Emacs是[[黑客]]们关于[[编辑器之战]]的两大主角之一，它的对手是[[vi]]（[[Vim]]）。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
{{Emacs}}Emacs在1970年代诞生于[[MIT计算机科学与人工智能实验室|MIT人工智能实验室]]（MIT AI Lab）。在此之前，人工智能实验室的[[PDP-6]]和[[PDP-10]]电脑上运行的[[ITS]]操作系统的默认编辑器是一个叫[[TECO]]（Text Editor and Corrector）的[[行编辑器]]。与现代的文本编辑器不同，TECO将击键、编辑和文本显示按照不同的模式进行处理，稍晚出现的vi与它有些类似。在TECO上击键并不会直接将这些字符插入到文档裡去，必须先输入一系列相应的TECO指令，而被编辑的文本在输入命令的时候是不会显示在屏幕上的。在如今还在使用的[[UNIX]]编辑器[[Ed (文本编辑器)|ed]]上，我们还能看到类似的工作方式。&lt;br /&gt;
&lt;br /&gt;
1970年代初，-{zh-tw:[[理查·史托曼]];zh-cn:[[理查德·斯托曼]]}--{zh-tw:拜訪;zh-cn:访问}--{zh-tw:[[史丹福大學人工智慧實驗室]];zh-cn:[[斯坦福大学人工智能实验室]]}-（Stanford AI Lab）时见到了那裡的&amp;quot;E&amp;quot; editor。这种编辑器有着[[所见即所得]]的直观特点，深深打动了-{zh-tw:史托曼;zh-cn:斯托曼}-，后来成为了大部分现代文本编辑器都具有的特性。后来斯托曼回到MIT，那时候MIT AI lab的[[黑客]]Carl Mikkelsen已经给TECO加上了称作“Control-R”的编辑显示模式，使得屏幕能跟随用户的每次击键刷新显示。斯托曼重写了这一模式，使它运行得更有效率，后来又加入了[[宏]]，允许用户重新定义运行TECO程序的键位。&lt;br /&gt;
&lt;br /&gt;
这一新版的TECO立刻在AI实验室流行开来，并且很快积累起了大量自定义的宏，这些宏的名字通常就以“MAC”或者“MACS”结尾，意为“宏”（macro）。两年后，[[蓋伊·史提爾二世]]承担起统一当时存在的各种键盘命令集的工作。史提爾和斯托曼经过一夜奋战，最终由斯托曼完成了这一任务，包括一套扩展和注释新的宏包的工具。这个完成的系统被称作EMACS，代表“Editing MACroS”，也代表“E with MACroS”。&lt;br /&gt;
&lt;br /&gt;
根据斯托曼的说法，他采用这个名字是“因为当时&amp;lt;nowiki&amp;gt;&amp;lt;E&amp;gt;&amp;lt;/nowiki&amp;gt;在ITS裡还没有被当作缩写用过”&amp;lt;ref&amp;gt;原文：because &amp;lt;nowiki&amp;gt;&amp;lt;E&amp;gt;&amp;lt;/nowiki&amp;gt; was not in use as an abbreviation on ITS at the time.&amp;lt;/ref&amp;gt;。也有说法指出，当时[[波士顿]]在MIT附近有家名为“{{le|Emack &amp;amp; Bolio&amp;#039;s}}”的商店出售的[[冰淇淋]]很受欢迎，[[Dave Moon]]是那裡的老主顾，他就将ITS上一个给文本排版的程序命名为BOLIO，然而斯托曼并不喜欢甚或根本不知道那种冰淇淋，此事后来成了黑客界的一桩公案。&lt;br /&gt;
&lt;br /&gt;
斯托曼意识到过多的定制、在开发过程中事实上的分支以及针对特殊用途的限制，威胁着Emacs的发展。后来他写道：&lt;br /&gt;
{{cquote|Emacs的发布基于社群共享，这意味着所有的发展都要反馈给我，由我进行整合和发布。&amp;lt;ref&amp;gt;原文：EMACS was distributed on a basis of communal sharing, which means all improvements must be given back to me to be incorporated and distributed.&amp;lt;/ref&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
最初的Emacs同TECO一样-{只}-能运行在PDP系列的电脑上。Emacs虽然是在TECO的基础上发展起来的，不过它已经足以被认为是一个新的文本编辑器了。很快，Emacs就成为ITS上的标准编辑程序，接着由Michael McMahon从ITS[[移植 (軟體)|移植]]到[[TOPS-20|Tenex]]和[[TOPS-20]]操作系统上。其他Emacs早期的贡献者还包括[[Kent Pitman]]、[[Earl Killian]]和[[Eugene Ciccarelli]]。到了1979年，Emacs已经是MIT人工智能实验室和它的计算机科学实验室的主流编辑器了。&lt;br /&gt;
&lt;br /&gt;
=== 其他早期实现 ===&lt;br /&gt;
&lt;br /&gt;
后来几年，程序员们写了很多类Emacs的编辑器。其中包括Michael McMahon和[[Daniel Weinreb]]为[[Lisp机器]]写的[[EINE]]（“EINE Is Not EMACS”）和[[ZWEI]]（“ZWEI Was EINE Initially”），还有Owen Theodore Anderson写的Sine。Weinreb的[[EINE]]是第一个以Lisp实现的Emacs。1978年，[[Bernard Greenberg]]写了[[Multics Emacs]]，大部分由Multics Lisp实现。Multics Emacs后来由[[Richard Soley]]维护。很多Emacs的变种，包括GNU Emacs，后来都将Lisp作为自己的扩展语言。&lt;br /&gt;
&lt;br /&gt;
[[詹姆斯·高斯林]]，在1981年写了[[Gosling Emacs]]，他后来还发明了[[NeWS]]和[[Java]]。作为第一个在[[Unix]]上运行的类Emacs编辑器，Gosling Emacs由[[C语言]]实现，并且以[[Mocklisp]]作为扩展语言。1984年，Gosling Emacs成为[[专有软件]]。&lt;br /&gt;
&lt;br /&gt;
=== GNU Emacs ===&lt;br /&gt;
&lt;br /&gt;
1984年，斯托曼开始致力于开发[[GNU Emacs]]，这将是一个[[自由软件]]，以代替专有的Gosling Emacs。最初GNU Emacs是在Gosling Emacs的基础上开发的，不过斯托曼后来用一个真正的Lisp解释器代替了原来的Mocklisp解释器，由于Lisp解释器在此软件中的核心地位，这意味着实际上重写了几乎全部代码。GNU Emacs是[[GNU]]计划的第一个项目，以C语言编写，将[[Emacs Lisp]]（其解释器由C实现）作为扩展语言。GNU Emacs最早广泛发布的版本是15.34，出现于1985年。实际上版本2到12并不存在，GNU Emacs的早期版本都是以“1.x.x”的形式编号，直到1.12版时开发人员放弃了这一记法，因为他们认为主版本号是不应该改动的，所以版本号从“1”跳跃到了“13”。因此，Version 13是第一个public release，它发布于1985年3月20日。&lt;br /&gt;
&lt;br /&gt;
GNU Emacs后来被移植到了Unix系统上。它比Gosling Emacs拥有更多的的功能，尤其是它有一个真正的Lisp作为扩展语言。结果，GNU Emacs很快就取代了Gosling Emacs，成为Unix系统上預設的Emacs编辑器。&lt;br /&gt;
&lt;br /&gt;
到1999年为止，GNU Emacs的开发工作基本是在封闭的情况下进行。这种开发方式在《[[大教堂和市集]]》中被称为“大教堂模式”。从那以后，GNU Emacs项目建立了公共开发邮件列表和匿名CVS代码访问，开发工作在一个CVS代码仓库中进行。2008年，Emacs开始使用Bazaar进行[[版本控制]]。&lt;br /&gt;
&lt;br /&gt;
斯托曼是GNU Emacs的主要维护者，但他曾经有几次把维护工作交给别人。他于2008年将代码的维护工作交给了[[Stefan Monnier]]和[[Chong Yidong]]&amp;lt;ref&amp;gt;{{cite web|url=http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg02140.html|title=Re: Looking for a new Emacs maintainer or team|publisher=gnu.org Mailing List|accessdate=2008-02-23|archive-date=2011-06-03|archive-url=https://web.archive.org/web/20110603231947/http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg02140.html|dead-url=no}}{{en icon}}，参见[http://www.networkworld.com/community/node/25360 &amp;quot;Stallman on handing over GNU Emacs, its future and the importance of nomenclature&amp;quot;] {{Wayback|url=http://www.networkworld.com/community/node/25360 |date=20080523201156 }}{{en icon}}&amp;lt;/ref&amp;gt;。他在mail list上發出以下內容：&amp;lt;br /&amp;gt;&lt;br /&gt;
{{cquote|From：Richard Stallman&amp;lt;br /&amp;gt;&lt;br /&gt;
Subject：Re: Looking for a new Emacs maintainer or team&amp;lt;br /&amp;gt;&lt;br /&gt;
Date：Fri, 22 Feb 2008 17:57:22 -0500&amp;lt;br /&amp;gt;&lt;br /&gt;
Stefan和Yidong願意接管，所以我也樂意將Emacs開發工作移交给他們。}}&lt;br /&gt;
&lt;br /&gt;
=== XEmacs ===&lt;br /&gt;
1991年，Lucid公司的[[Jamie Zawinski]]等人以GNU Emacs 19的一个早期alpha版为基础，添加了一些新的特性，开发出Lucid Emacs。很快，Lucid Emacs的开发与GNU Emacs渐行渐远，最终双方的团队放弃了将两者合并的努力。Lucid Emacs被重新命名为XEmacs；至今为止，XEmacs仍然是最流行的Emacs变种之一。&lt;br /&gt;
&lt;br /&gt;
=== 其他GNU Emacs的衍生版本 ===&lt;br /&gt;
&lt;br /&gt;
其他的衍生版本，包括：&lt;br /&gt;
&lt;br /&gt;
* [[Meadow]] - 一个Windows下的日语版本&lt;br /&gt;
* [[SXEmacs]] - Steve Youngs实现的衍生版本，基于XEmacs&lt;br /&gt;
* [[Aquamacs]] - 一个致力于与苹果的[[OS X]]整合的Emacs版本&lt;br /&gt;
&lt;br /&gt;
=== 其他Emacs变种 ===&lt;br /&gt;
&lt;br /&gt;
除上述编辑器以外，还有很多不基于GNU Emacs的编辑器，有些项目的目标是创建一个精简版的Emacs。在1980年代，GNU Emacs只能在很高端的电脑上运行，这就为精简版的Emacs实现的出现奠定了基础。还有一些Emacs变种是为了克隆一个完整的Emacs，但是使用不同的Lisp方言或者其他的编程语言。比如：&lt;br /&gt;
&lt;br /&gt;
* [[MicroEMACS]]，原作者是Dave Conroy，后来由Daniel Lawrence进一步开发，有很多变种。&lt;br /&gt;
* [[Mg]]，原名MicroGNUEmacs，是一个MicroEMACS的公共领域分支，比MicroGNUEmacs更加接近于GNU Emacs。现在默认安装在[[OpenBSD]]上。&lt;br /&gt;
* NotGNU，一个小型、快速的Emacs实现，是免费软件，支持DOS、Win16、Win32和GNU/Linux，作者为Julie Melbin。&lt;br /&gt;
* [[JOVE]]（Jonathan&amp;#039;s Own Version of Emacs），Jonathan Payne为[[类Unix系统]]写的Emacs不可编程的Emacs实现。&lt;br /&gt;
* [[GNU Zile|Zile]]是&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Z&amp;lt;/u&amp;gt;ile &amp;lt;u&amp;gt;I&amp;lt;/u&amp;gt;s &amp;lt;u&amp;gt;L&amp;lt;/u&amp;gt;ossy &amp;lt;u&amp;gt;E&amp;lt;/u&amp;gt;macs&amp;#039;&amp;#039;的递归缩写，以[[C语言]]编写。&lt;br /&gt;
* [[Climacs]]，以[[Common Lisp]]编写的Emacs变种。&lt;br /&gt;
* [[QEmacs]]，一个由[[Fabrice Bellard]]编写的小型编辑器，支持UTF-8，可以快速编辑上百兆大小的文件。&lt;br /&gt;
* Epsilon，一个由Lugaru Software开发的Emacs变种。支持MS-DOS、MS-Windows、GNU/Linux、FreeBSD、O/S 2等操作系统。它使用了一个与C语言语法类似的非Lisp语言作为扩展语言。&lt;br /&gt;
* [[EmACT]]，1986年由Christian Jullien从MicroEmacs衍生而来，源代码可以在SourceForge获取。&lt;br /&gt;
* [[Hemlock]]，最初以[[Spice Lisp]]实现，后来改为[[Common Lisp]]。Hemlock是[[CMU Common Lisp]]的一部分，受到了[[Zmacs]]的影响。&lt;br /&gt;
&lt;br /&gt;
=== 可以模拟Emacs的编辑器 ===&lt;br /&gt;
&lt;br /&gt;
* [[Yi]]，以[[Haskell]]语言编写，内置一个Emacs模拟器。&lt;br /&gt;
* [[Joe&amp;#039;s Own Editor]]内置一个Emacs模拟器。&lt;br /&gt;
* [[JED]]内置一个Emacs模拟器。&lt;br /&gt;
&lt;br /&gt;
== 版权 ==&lt;br /&gt;
Emacs的版权遵从[[GNU通用公共许可证]]，赋予他人自由地对包括C和Lisp在内的Emacs源文件进行修改和再发行的权利。较早版本的GNU Emacs文档是在一种点对点（ad-hoc）的许可下发布的，要求所有修改过的副本都要包含某些特定的文字。例如，GNU Emacs的用户手册中必须包含如何获得GNU Emacs的说明，以及理查·史托曼的文章——《[[GNU宣言]]》。作为较早版本的GNU Emacs的分支，XEmacs的手册也采用相同的使用许可。较新版本的GNU Emacs文档则采用《[[GNU自由文档许可证]]》，以使用“不变段落”（&amp;quot;invariant sections&amp;quot;）的形式包含有同样的文本，并且要求这些文档自我声明为“GNU手册”（&amp;#039;&amp;#039;GNU Manuals&amp;#039;&amp;#039;）。&lt;br /&gt;
&lt;br /&gt;
== 功能特点 ==&lt;br /&gt;
&lt;br /&gt;
Emacs不仅仅是一个编辑器，它是一个整合环境，或可称它为[[集成开发环境]]，这些功能如让使用者置身于全功能的操作系统中。Emacs可以：&lt;br /&gt;
&lt;br /&gt;
* 收发[[电子邮件]]、上[[新闻组]]（Gnus）&lt;br /&gt;
* 無縫直接编辑远程档案（Tramp）&lt;br /&gt;
* 通过[[Telnet]]登录远程主机&lt;br /&gt;
* 操作[[殼層]]（M-x EShell，Term）&lt;br /&gt;
* 結合git, mercurial等版本控制系統並直接操作（Magit，VC）&lt;br /&gt;
* 上Twitter（Twittering-mode）&lt;br /&gt;
* -{zh-hans:登陆; zh-hant:登錄;}-[[IRC]]和朋友交流（M-x ERC，rcirc）&lt;br /&gt;
* 电子数据表&lt;br /&gt;
* 模拟其他编辑器，如vi（Evil-mode）、WordStar、EDT、TPU等&lt;br /&gt;
* 编辑Wiki (Wikipedia-mode)&lt;br /&gt;
* 对多种[[编程语言]]的[[编辑]]，如C/C++、[[Perl]]、[[Python]]、[[Lisp]]等等&lt;br /&gt;
* [[调试程序]]，结合[[GNU除錯器|GDB]]，EDebug等。&lt;br /&gt;
* 玩游戏&lt;br /&gt;
* 计算器&lt;br /&gt;
* 心理咨询（M-x doctor）&lt;br /&gt;
* [[超文本咖啡壶控制协议|煮咖啡]]&lt;br /&gt;
* 记笔记、日记（Org-mode）&lt;br /&gt;
* 管理日程，Task，待辦事項（ToDo），约会等GTD（Org-mode）&lt;br /&gt;
* 寫作與出版（Org-mode，Muse-mode）&lt;br /&gt;
* 目录管理（Dired）&lt;br /&gt;
* 文件比较、合并（Ediff）&lt;br /&gt;
* 阅读info和man文档（M-x info，woman）&lt;br /&gt;
* 浏览网站（M-x eww）&lt;br /&gt;
* 为各种程序（[[TeX]]、[[LaTeX]]等）提供统一的操作界面&lt;br /&gt;
* ……&lt;br /&gt;
&lt;br /&gt;
此外Emacs还有如下特点：&lt;br /&gt;
# 实时编辑器&lt;br /&gt;
# Self-documenting&lt;br /&gt;
# 可定制性&lt;br /&gt;
# 可扩展性（集成Lisp语言）&lt;br /&gt;
&lt;br /&gt;
=== 可定制性 ===&lt;br /&gt;
&lt;br /&gt;
GNU Emacs几乎所有的功能都可以定制，有的可以通过[[C语言]]实现，有的可以通过一个[[Lisp]]的方言——[[Emacs Lisp]]来实现。在Lisp环境中，[[变量]]和[[子程序]]可以在不重新编译/启动Emacs的前提下被修改。Emacs用户可以根据自身的需要和偏好对编辑器进行定制。强大而自由的个人定制功能是Emacs受到广泛欢迎的重要原因之一。定制Emacs主要有三种方法：&lt;br /&gt;
&lt;br /&gt;
# 使用Emacs的交互式定制功能（即&amp;#039;&amp;#039;&amp;#039;customize&amp;#039;&amp;#039;&amp;#039;）。Emacs提供了图形化的交互界面，使用户能够对可定制的公共变量进行设置，也可以定制配色主题。这种方法使Emacs的初学者不需要接触Emacs Lisp代码即可完成定制。&lt;br /&gt;
# 将一系列按键记录为宏，调用这一宏可以自动重复进行已经记录的一系列复杂操作。宏可以保存并命名，以便按名调用，不过同一时刻-{只}-能存在一个匿名的宏。&lt;br /&gt;
# 通过使用Emacs Lisp完成Emacs的定制。这种方法最为复杂，但是也提供了更多的灵活性和更强大的功能。用户通常将个人定制的Emacs Lisp代码保存在一个名为&amp;lt;code&amp;gt;.emacs(.el)&amp;lt;/code&amp;gt;（或init.el）的配置文件中，Emacs程序运行之初便读取这一文件，完成用户要求的配置。用户可以通过&amp;lt;code&amp;gt;.emacs&amp;lt;/code&amp;gt;文件重设变量、重新定义按键的绑定（key bindings）、以及定义新的命令，以方便用户个人的使用。很多高级用户的&amp;lt;code&amp;gt;.emacs&amp;lt;/code&amp;gt;文件的个性化配置长达数百行甚至更多，这些个人的定制使他们的Emacs不仅与默认配置的功能不同，每个人的Emacs之间也千差万别。这种差异能很好的满足不同个性的偏好和不同工作的需求。&lt;br /&gt;
&lt;br /&gt;
如果一段Emacs Lisp代码确实有用，它通常会被打包并发布给其他用户。在[[因特网]]上能找到很多这样来自第三方的Emacs Lisp库，例如能用于编辑[[维基百科]]条目的[[Wikipedia:Wikipedia-mode.el|wikipedia-mode]]。[[Usenet]]上的[[新闻组]][news://gnu.emacs.sources gnu.emacs.sources]{{dead link|date=2017年11月 |bot=InternetArchiveBot |fix-attempted=yes }}专门发布新的Emacs Lisp库。有些第三方代码最终还成为了Emacs的一部分。&lt;br /&gt;
&lt;br /&gt;
手工配置安装各种Emacs Lisp代码毕竟有些麻烦。为了解决这个问题，Emacs 24自带包管理器[[ELPA]]（package.el）。用户可以方便的浏览可用的包（M-x package-list-packages）和自动下载安装包（M-x package-install）。详细信息可以参考Emacs Wiki上的[http://www.emacswiki.org/emacs/ELPA ELPA词条]{{Wayback|url=http://www.emacswiki.org/emacs/ELPA |date=20130826041251 }}。&lt;br /&gt;
&lt;br /&gt;
=== 性能 ===&lt;br /&gt;
&lt;br /&gt;
在GNU Emacs刚诞生时，它比相同系统上的其他编辑器运行速度要慢很多，但是现代的电脑可以很快地运行GNU Emacs。早期的GNU Emacs可以处理256 MB以下的文件，GNU Emacs 23.2将这一限制提升到512 MB，而在64位系统的GNU Emacs 24中，这个限制是大约2 EiB。&lt;br /&gt;
&lt;br /&gt;
=== 平台 ===&lt;br /&gt;
Emacs是目前世界上最具可移植性的重要软件之一，能够在当前绝大多数[[操作系统]]上运行，包括各种[[类Unix系统]]（[[Linux|GNU/Linux]]、[[FreeBSD]]、[[NetBSD]]、[[OpenBSD]]、[[Solaris]]、[[AIX]]、[[OS X]]等）、[[MS-DOS]]、[[Microsoft Windows]]等。甚至在Android和诺基亚的Maemo上，Emacs也能运行。&lt;br /&gt;
&lt;br /&gt;
GNU Emacs既可以在[[文本终端]]也可以在[[图形用户界面]]环境下运行。在类Unix系统上，GNU Emacs使用[[X-Window]]产生GUI，或者直接使用“框架”（widget toolkit），例如[[Motif]]、[[LessTif]]或[[GTK+]]等等。Emacs也能够利用OS X和Microsoft Windows的本地图形系统产生GUI。用GUI环境下的Emacs能提供[[菜单栏]]（Menubar）、工具栏（toolbar）、[[滚动条]]以及[[环境菜单]]（context menu）等交互方式。&lt;br /&gt;
&lt;br /&gt;
=== 编辑模式 ===&lt;br /&gt;
&lt;br /&gt;
==== 主模式 ====&lt;br /&gt;
&lt;br /&gt;
Emacs采取的编辑方式是对不同类型的文本进入相应的编辑模式，即“主模式”（major mode）。Emacs针对多种文档定义了不同的主模式，包括普通[[文本文件]]、各种[[编程语言]]的[[源文件]]、[[HTML]]文档、[[TEX]]与[[LaTeX]]文档，以及其他类型的文本文件等等。&lt;br /&gt;
&lt;br /&gt;
每种主模式都有特殊的Emacs Lisp变量和函数，使用户在这种模式下能更方便的处理这一特定类型的文本。例如，各种编程语言的主模式通常会提供：&lt;br /&gt;
&lt;br /&gt;
* [[语法高亮]]（“font lock”）：对源文件文本中的关键字、注释加以不同的字体和颜色（“faces”）。&lt;br /&gt;
* 自动缩进，用来维护文件的格式一致。&lt;br /&gt;
* 自动插入文件所需要的结构元素，如空格、换行以及括号。&lt;br /&gt;
* 特殊的编辑命令，比如跳转到函数的开头或者结尾，或者（在类似于XML的标记语言中）验证文档还有插入关闭标签。&lt;br /&gt;
&lt;br /&gt;
==== 次模式 ====&lt;br /&gt;
&lt;br /&gt;
Emacs还能进一步定义“次模式”（minor mode），用以深度定制Emacs。一个GNU Emacs的缓冲区（buffer）-{只}-能关联于一种主模式，却能同时关联多个次模式。比如，编写C语言的主模式可以同时定义多个次模式，每个次模式有着不同的缩进风格（indent style）。&lt;br /&gt;
&lt;br /&gt;
=== 国际化 ===&lt;br /&gt;
&lt;br /&gt;
Emacs支持对多种[[文字]]的文本编辑，加上对多种字符集、字母系统、书写系统，以及不同文化的书写习惯都提供了支持，使得世界上大多数语言的使用者都能通过Emacs进行文本处理。Emacs还能通过调用诸如[[Aspell]]这样的外部程序，实现多种语言的拼写检查。GNU Emacs 24添加了对双向文字的支持。&lt;br /&gt;
&lt;br /&gt;
Emacs支持包括[[UTF-8]]在内的诸多编码系统。GNU Emacs从23开始以UTF-8作为自身的编码系统，而在之前的版本，Emacs拥有一种特殊的内部编码系统MULE（MULti-language Environment），在读写文件时进行编码和解码。XEmacs编码系统和GNU Emacs相似，但具体的实现方法不完全一样。&lt;br /&gt;
&lt;br /&gt;
一个叫做[[Emacspeak]]的子系统可以通过音频反馈，让拥有视觉障碍的用户和盲人用户使用Emacs。&lt;br /&gt;
&lt;br /&gt;
== 使用Emacs ==&lt;br /&gt;
&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
&lt;br /&gt;
在普通的编辑模式下，GNU Emacs和其他文本编辑器一样，允许用户通过按下键盘上的键插入其相对应的字符，也可以使用键盘上的方向键来移动光标。使用各种[[修饰键]]（如[Ctrl]、[Alt]、[Shift]等）和其它的普通键配合可以调用Emacs Lisp函数和宏。&lt;br /&gt;
&lt;br /&gt;
某些GNU Emacs命令会调用外部程序，比如使用Aspell进行拼写检查或者使用[[GCC]]进行程序编译，解析被调用的外部程序的输出，并将结果显示出来。习惯[[IBM Common User Access]]的用户可以使用“cua-mode”，“cua-mode”曾经是一个第三方插件，从GNU Emacs 22开始被包含在Emacs中。&lt;br /&gt;
&lt;br /&gt;
下表给出了一些基本命令。[Ctrl]键以大写&amp;#039;&amp;#039;C&amp;#039;&amp;#039;表示，[Meta]键[Alt]键以大写&amp;#039;&amp;#039;M&amp;#039;&amp;#039;表示。&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 命令&lt;br /&gt;
! 快捷键&lt;br /&gt;
! 功能&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;forward-word&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;M-f&amp;lt;/code&amp;gt;&lt;br /&gt;
|向前移动一个单词。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isearch-forword&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-s&amp;lt;/code&amp;gt;&lt;br /&gt;
|递增搜索&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;undo&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-/&amp;lt;/code&amp;gt;&lt;br /&gt;
|撤销最后一次操作，如果多次执行则取消以前的操作。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;keyboard-quit&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-g&amp;lt;/code&amp;gt;&lt;br /&gt;
|取消当前的命令。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;find-file&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-x C-f&amp;lt;/code&amp;gt;&lt;br /&gt;
|在一个新的缓冲区里访问某个文件（用户给定文件名）。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;save-buffer&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-x C-s&amp;lt;/code&amp;gt;&lt;br /&gt;
|将缓冲区的内容保存到文件。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;save-some-buffers&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-x s&amp;lt;/code&amp;gt;&lt;br /&gt;
|保存所有的缓冲区&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;save-with-newname&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-x C-w&amp;lt;/code&amp;gt;&lt;br /&gt;
|将缓冲区的内容另存为一个新的文件。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;save-buffers-kill-emacs&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-x C-c&amp;lt;/code&amp;gt;&lt;br /&gt;
|提示是否保存文件，然后退出Emacs。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;set-mark-command&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-[空格]&amp;lt;sup&amp;gt;注&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|设定标记，用于剪切或复制。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kill-region&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-w&amp;lt;/code&amp;gt;&lt;br /&gt;
|剪切标记到当前光标所在处的文本。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kill-ring-save&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;M-w&amp;lt;/code&amp;gt;&lt;br /&gt;
|复制标记到当前光标所在处的文本。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;yank&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-y&amp;lt;/code&amp;gt;&lt;br /&gt;
|从Emacs的剪贴板中粘贴文本。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kill-buffer&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;C-x k&amp;lt;/code&amp;gt;&lt;br /&gt;
|关闭当前buffer。&lt;br /&gt;
|}&lt;br /&gt;
注：中文系统C-[空格]一般为系统输入法，可使用C-@代替。&lt;br /&gt;
&lt;br /&gt;
=== 小缓冲 ===&lt;br /&gt;
&lt;br /&gt;
Emacs使用“小缓冲”（通常在最下面一行）显示信息提示以及输入命令和命令参数。在合适的情况下，小缓冲支持使用制表键或空格键补全。每个frame只有一个小缓冲。&lt;br /&gt;
&lt;br /&gt;
=== 文件管理与显示 ===&lt;br /&gt;
&lt;br /&gt;
Emacs将文本存放在[[緩衝器|缓冲区]]中。用户可以创建新的缓冲区，也可以关闭不需要的缓冲区，Emacs可以同时存在很多缓冲区。大部分的缓冲区的文本来自[[文本文件]]，用户可以编辑缓冲区的内容，并且保存到磁盘上。缓冲区也可以保存临时文本，比如“help”库显示的文档字符串。&lt;br /&gt;
&lt;br /&gt;
=== 编程语言支持 ===&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
* Emacs 内建的 python-mode&lt;br /&gt;
* [[Elpy]]&lt;br /&gt;
&lt;br /&gt;
=== Emacs小拇指 ===&lt;br /&gt;
很多Emacs用户都有过[[重複性勞損]]的经历，原因是Emacs强烈依赖Ctrl键和Meta键，也由于Ctrl键在现代键盘中的位置。&lt;br /&gt;
&lt;br /&gt;
解决方法有软件方法，也有硬件方法。软件方法包括：&lt;br /&gt;
&lt;br /&gt;
* 使用 ergoemacs-mode 定制键盘布局。&amp;lt;ref&amp;gt;{{cite web |url=https://github.com/ergoemacs/ergoemacs-mode |title=ergoemacs-mode |accessdate=2015-02-17 |archive-date=2015-06-27 |archive-url=https://web.archive.org/web/20150627174802/https://github.com/ergoemacs/ergoemacs-mode |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* 定制键盘布局，使Ctrl和大寫鎖定键交换位置。其他相似的方法包括将大写锁定键定义为Ctrl，或交换Ctrl和Meta键。&lt;br /&gt;
* god-mode 可以让 Emacs 不用修饰键就触发命令。&lt;br /&gt;
* 使用 evil-mode，一个高级的 Vim 模拟层。&lt;br /&gt;
* Emacs有一个内置的“Viper-mode”，允许用户使用[[vi]]的键绑定来进行基本的文本编辑，而使用Emacs本身的键绑定来进行更高级的操作。&lt;br /&gt;
* 让一个更容易按的键（如[[空格键]]）拥有多种功能，当那个键和其他键一起按下时，功能为Ctrl键的。&lt;br /&gt;
* 使用语音输入控制Emacs。&lt;br /&gt;
* 很多软件，如[[xwrits]]，可以提醒用户进行定期的休息。&lt;br /&gt;
&lt;br /&gt;
硬件方法包括使用特殊的键盘，如Kinesis键盘的修饰键放在[[大拇指]]很容易按到的位置，或者[[微软自然键盘]]，它的修饰键对称的放置在键盘的两边，并且可以使用手掌按下。脚控踏板也是一种方法。&lt;br /&gt;
&lt;br /&gt;
如果使用普通鍵盤，可以在按Ctrl組合鍵時手掌下移，用無名指擊Ctrl，或者直接以小指掌骨压下Ctrl，以規避小指過度利用。&lt;br /&gt;
&lt;br /&gt;
“Emacs小拇指”是近些年才出现的。在Emacs诞生时，键盘的Ctrl键非常大，并且在空格键的旁边，使用大拇指很容易按。&lt;br /&gt;
&lt;br /&gt;
[[Vim]] 的拥护者经常以Emacs小拇指作为切换编辑器的原因，虽然有些 Vim 用户（因为相似的原因）也会交换模式转换键和大小写转换键的功能。&amp;lt;ref&amp;gt;{{cite web|url=http://japan.zdnet.com/blog/komatsu/2007/10/14/entry_27016464/|title=VimとEmacsのあいだで小指痛を叫んだけもの|date=2007-10-14|language=ja|accessdate=2015-02-17|archive-date=2015-02-17|archive-url=https://web.archive.org/web/20150217050014/http://japan.zdnet.com/blog/komatsu/2007/10/14/entry_27016464/|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* [http://www.gnu.org/software/emacs/emacs.html GNU Emacs官方网站]{{Wayback|url=http://www.gnu.org/software/emacs/emacs.html |date=20030603175805 }}，包括：&lt;br /&gt;
** [http://www.gnu.org/software/emacs/emacs-faq.text GNU Emacs常见问题解答]{{Wayback|url=http://www.gnu.org/software/emacs/emacs-faq.text |date=20030622054841 }}&lt;br /&gt;
** [http://www.gnu.org/software/emacs/windows/ntemacs.html GNU Emacs for Windows常见问题解答]{{Wayback|url=http://www.gnu.org/software/emacs/windows/ntemacs.html |date=20130823030259 }}&lt;br /&gt;
* [http://www.gnu.org/software/emacs/emacs-paper.html A paper on the design of the original Emacs]{{Wayback|url=http://www.gnu.org/software/emacs/emacs-paper.html |date=20030407173147 }}，by Stallman&lt;br /&gt;
* [http://www.multicians.org/mepap.html &amp;quot;Multics Emacs: The History, Design and Implementation&amp;quot;]{{Wayback|url=http://www.multicians.org/mepap.html |date=20180506200028 }} by B. Greenberg&lt;br /&gt;
* [http://www.jwz.org/doc/emacs-timeline.html &amp;quot;Emacs Timeline&amp;quot;]{{Wayback|url=http://www.jwz.org/doc/emacs-timeline.html |date=20150804193118 }} by J. Zawinski&lt;br /&gt;
* [https://web.archive.org/web/20030801185801/http://www.finseth.com/~fin/emacs.html &amp;quot;List of Emacs implementations&amp;quot;] by C. Finseth&lt;br /&gt;
* [http://directory.fsf.org/wiki/Emacs Reviewed entry]{{Wayback|url=http://directory.fsf.org/wiki/Emacs |date=20130621092239 }} in the [[Free Software Directory]]&lt;br /&gt;
* [http://www.finseth.com/emacs.html Emacs实现列表]{{Wayback|url=http://www.finseth.com/emacs.html |date=20130921153514 }}&lt;br /&gt;
* [http://www.wikemacs.org/index.php WikEmacs]{{Wayback|url=http://www.wikemacs.org/index.php |date=20191016125647 }}&lt;br /&gt;
* [https://web.archive.org/web/20120508003548/http://emacser.com/ Emacs中文网(已失效)]&lt;br /&gt;
* [http://emacs-china.org Emacs China中文论坛]{{Wayback|url=http://emacs-china.org/ |date=20200918051110 }}&lt;br /&gt;
* [https://web.archive.org/web/20030626193707/http://www.cbi.pku.edu.cn/chinese/documents/csdoc/emacs/ 中文Emacs User&amp;#039;s Guide]&lt;br /&gt;
* [https://web.archive.org/web/20090207193326/http://www.ibm.com/developerworks/cn/views/linux/tutorials.jsp?cv_doc_id=84932 IBM dw教程：生活在Emacs中]&lt;br /&gt;
* [http://emacswiki.org/ Emacs Wiki]{{Wayback|url=http://emacswiki.org/ |date=20121206155218 }}：一个关于&amp;#039;&amp;#039;&amp;#039;Emacs&amp;#039;&amp;#039;&amp;#039;的[[wiki]]。网站上有[[英语]]、[[汉语]]等多种语言。EmacsWiki主要是提供一些Emacs的使用教程、技巧和用户贡献的配置文件&amp;lt;ref&amp;gt;{{Cite web|url=http://emacser.com/el-get.htm|title=GNU Emacs的终极扩展管理工具— el-get|publisher=Emacs中文网|access-date=2012-05-29|archive-url=https://web.archive.org/web/20120620205938/http://emacser.com/el-get.htm|archive-date=2012-06-20|dead-url=yes}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite web|url=http://c2.com/cgi/wiki?EmacsWiki|title=Emacs Wiki|accessdate=2012-05-29|archive-date=2012-05-23|archive-url=https://web.archive.org/web/20120523115618/http://c2.com/cgi/wiki?EmacsWiki|dead-url=no}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite web|url=http://blog.csdn.net/redguardtoo/article/details/7222501#sec-13|title=一年成为Emacs高手（像神一样使用编辑器）|author=redguardtoo|publisher=csdn|accessdate=2012-05-29|archive-date=2013-04-30|archive-url=https://web.archive.org/web/20130430215201/http://blog.csdn.net/redguardtoo/article/details/7222501#sec-13|dead-url=no}}&amp;lt;/ref&amp;gt;。像其他wiki一样，所有人都可以编辑。不过EmacsWiki没有[[注册]]的制度，不需要[[账户]]就可以编辑整个wiki。&amp;lt;ref&amp;gt;{{Cite web|url=http://emacswiki.org/|title=EmacsWiki: Site Map|quote=You can edit this website. There’s a link, Edit this page, at the bottom of this and other pages. Please check SiteMap Discussion before editing this SiteMap page, however.|accessdate=2012-05-29|archive-date=2012-12-06|archive-url=https://web.archive.org/web/20121206155218/http://emacswiki.org/|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{Reflist|1}}&lt;br /&gt;
* 注：本文第一部分，部分引用自遵守[[GNU自由文档许可证|GFDL]]的《Emacs用户指南》汉译版&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
* [[文件编辑器比较]]&lt;br /&gt;
* [[Wikipedia:文本编辑器支持#GNU Emacs|使用Emacs編輯維基百科]]&lt;br /&gt;
* [[GNU TeXmacs]]&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
{{GNU}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Emacs| ]]&lt;br /&gt;
[[Category:檔案比較工具]]&lt;br /&gt;
[[Category:Unix文本编辑器]]&lt;br /&gt;
[[Category:1976年软件]]&lt;br /&gt;
[[Category:自由整合開發環境]]&lt;br /&gt;
[[Category:用C编程的自由软件]]&lt;br /&gt;
[[Category:用Lisp語言編輯的自由軟件]]&lt;br /&gt;
[[Category:自由文本编辑器]]&lt;br /&gt;
[[Category:GNU计划软件]]&lt;br /&gt;
[[Category:十六进制编辑器]]&lt;br /&gt;
[[Category:Linux集成开发环境]]&lt;br /&gt;
[[Category:Linux文本编辑器]]&lt;br /&gt;
[[Category:OS X文本编辑器]]&lt;br /&gt;
[[Category:OpenVMS文本编辑器]]&lt;br /&gt;
[[Category:Windows文本编辑器]]&lt;/div&gt;</summary>
		<author><name>imported&gt;沈澄心</name></author>
	</entry>
</feed>