emacs教程
- 格式:doc
- 大小:63.00 KB
- 文档页数:15
Emacs编辑器的使用Emacs编辑器的使用A.1Emacs简介前面已经介绍过一种全屏幕文本编辑工具Vi,这里将介绍另外一种功能强大、应用也非常广泛的全屏幕文本编辑器Emacs。
Emacs全称为Editor MACroS,由于其移植性极好,所以在当今世界的几乎任何一个操作系统上都可以见到它的身影。
现在的Emacs已经超出了原来的单一的文本编辑功能,可以用来管理文件、阅读公告板,甚至可以进行WWW浏览。
另外Emacs源代码可以使用C、C++、Lisp等语言定制,对一些编程爱好者来说,这无疑是一大福音,同时也使其灵活性大大增加。
Emacs编辑器的使用、操作与使用其他标准的文本编辑器一样。
键盘上普通的按键用来输入字符,而编辑器的操作命令是通过键盘上的一些特殊的按键来实现的,例如Ctrl、Alt等控制键。
与Vi不同,Emacs编辑器没有特定的输入模式与命令模式之分。
在输入文本时,也可以执行编辑命令,例如用Ctrl 键来移动光标、保存文件等,而不必忍受切换模式的麻烦。
Emacs 编辑器是一个复杂且非常灵活的编辑器.它有好几百个编辑命令。
Emacs编辑器也有一些特殊的特性,例如多窗口特性,可以在编辑文件时同时显示两个窗口。
也可以同时打开并对多个文件进行编辑与操作,并在屏幕上与之对应的编辑窗口内显示各个文件。
Emacs编辑器通过巧妙地控制、操作工作缓冲区来实现其强大、灵活的功能。
Emacs编辑器可以被认为是面向缓冲区的编辑器。
在任何编辑器中编辑文件时,该文件将首先被拷贝到工作缓冲区中,而所有的编辑操作都在工作缓冲区中进行。
许多编辑器在编辑文件时仅开辟一个工作缓冲区,因此仅能打开一个文件。
而Emacs编辑器可以同时开辟并管理多个工作缓冲区,因此允许同时对多个文件进行编辑操作,还可以用编辑缓冲区来保存、删除或拷贝文本,用户甚至可以开辟目己的缓冲区,并在这些缓冲区中保存文本,必要时可以把这些缓冲区内的文本保存到文件中。
前言【写给读者的话】这篇文章纯粹是我个人在学习使用emacs编辑器过程中实践的记录,其中语言文字上面也许会有些错误,希望读者发现之后能够帮我纠正,在此先谢了。
这里的每个命令都经过我亲身的实践,关于emacs编辑器系统一些的简易点的中文资料不是很多,所以学习有一定的难度,我的愿望是大家能够花费尽可能短的时间,掌握emacs编辑器的使用方法。
如果你仅仅是为了临时使用这个工具来临时做一些事情,那么本文也适合你,你只需要看本前言中的【最基本命令】一节即可。
如果有人转载,希望您能注明出处和作者;如果将本文用于商业行为,希望您能先通知我;希望大家能够互相体谅,尊重对方的劳动成果。
本文包含了基本的emacs编辑器的使用,目前本人也在最初的学习过程中,希望大家能够在自己空闲时间内共享资料积极交流.【引言】有一种编辑器叫emacs,其实很早就听说了它的大名。
之前我使用linux,看到舍友用vi编辑文件,于是我也自然的用了几次vi,感觉很难用,但是还是艰难地会了几个最基本的vi操作:打开文件,编辑文件,保存文件,撤销,删除,复制,剪切,粘贴。
后来和舍友聊天,他说还有一个叫做emacs的编辑器,于是我就知道了原来linux下面两个最著名的编辑器,emacs和vi.当时我想学学用emacs,不过还没开始就放弃了,因为我连vi都还没有用好,还想再学emacs?做人不能太贪,还是把我刚学会的几个vi命令好好消化消化吧。
于是我就开始使用vi了,一边使用,一边查找自己想要知道的新的功能,一边记录,我记得那时候从大约2007-2008年之间吧。
2009年我进入了公司,大概能够磕磕绊绊地使用vi在linux中编辑文件了,关键的一个月,大约是2009年3月份,我在工作的时候全部使用vi看代码编辑代码编辑文件,晚上我还特地上网搜索关于vi的资料并且亲自实践学习,而且自己还整理了一个简易版的vi手册,到了现在2010年9月3日,我已经能够像说话一样使用vi了。
【Linux】Emacs 教程中文版Emacs 的命令通常包括控制键(就是上面标有Ctrl或Ctl的那个)或者是META键(上面标有EDIT或ALT)。
为了方便起见我们将用下面的缩写来代替这些键的全称:C- 意思是当敲入字符时同时按住控制键,因此,C-f表示:按住控制键并且按f 。
M- 表示当键入时按住META 或ALT或EDIT键。
如果没有META 或ALT或EDIT键,则用ESC键代替。
表示ESC键注意:退出Emacs,按C-x C-c(两个字符)。
在文本左边区域的“>>”符号表示让你试着使用一个命令。
比如:>> 现在键入C-v(观看下一屏)移动到下一屏。
(就象前面说的,按v的同时也按住控制键)。
从现在开始,每当你读完一屏的时候都可以用它来翻屏。
注意在翻屏后会保留上屏的最后一行;这是为你继续阅读文本提供某些连贯性。
你所需要知道的第一件事是如何把光标从一个地方移动到另一个地方。
你已经知道了如何向前翻一屏--用C-v。
要向后翻一屏,键入M-v。
>> 试着键入M-v 和C-v 几次。
* 摘要(SUMMARY)---------------------------下面几个命令对整屏观看时有用:C-v 向前翻一整屏。
M-v 向后翻一整屏。
C-l 清除屏幕并重新显示所有的文本,然后把光标移动到屏幕的中央。
(注意是Control-L,而不是Control-1)。
>> 寻找光标,并且注意它在文本里的位置。
然后键入C-l。
再寻找光标你会注意到光标现在会出现在同样的文本附近。
* 基本光标控制(BASIC CURSOR CONTROL)-----------------------------------------------------------------整屏整屏的移动是很有用的,可是如何把光标移动到屏幕上文本里的一个指定的地方呢?有好几个方法可以实现。
最基本的方法是用命令C-p,C-b,C-f,和C-n。
●特殊控制C-u 数字命令带参数的命令C-x C-c退出EmacsC-g终止失去响应的命令,或取消数字参数和只输入到一半的命令META系列组合键用来操作“由语言定义的单位(如词、句子、段落)”CONTROL 系列组合键用来操作“与语言无关的单位(如字符、行等)”ESC本身是一个字符键,而不是一个修饰键(modifier key)TAB自动完成●命令集扩展(EXTENDING THE COMMAND SET)C-x字符扩展。
C-x 之后输入另一个字符或者组合键。
M-x命令扩展。
M-x 之后输入一个命令名●基本的光标控制(BASIC CURSOR CONTROL)C-f 向右移动一个字符(forward)C-b向左移动一个字符(backward)M-f 向右移动一个词【对中文是移动到下一个标点符号】M-b向左移动一个词【对中文是移动到上一个标点符号】C-n移动到下一行(next)C-p移动到上一行(previous)C-a移动到行首C-e移动到行尾M-a移动到句首M-e移动到句尾M-<移动到所有文字的最开头M-> 移动到所有文字的最末尾●页面光标控制C-v 向前移动一屏M-v 向后移动一屏●搜索(SEARCHING)C-s是向前搜索C-s C-w搜索光标到单词结尾部分C-r 是向后搜索结束搜索C-g会让光标回到搜索开始的位置<Return>则让光标留在搜索结果上●替换(replace)M-x repl s<RET>changed<Return>altered<RET>替换光标以下内容●插入与删除(INSERTING AND DELETING)<Delback>删除光标前的一个字符C-d删除光标后的一个字符M-<Delback>移除光标前的一个词M-d移除光标后的一个词C-k移除从光标到“行尾”间的字符M-k移除从光标到“句尾”间的字符(包括换行符)C-@ C-w移除位于这两点之间的所有文字M-w copyC-w cutC-y召回最近一次移除的内容,pasteM-y召回前几次移除的内容●撤销(UNDO)C-x u撤销以前的命令●列操作C-@ 在起始位置做标记C-x, r, k在结束位置剪切C-x, r, y在结束位置粘贴C-x, r, o在结束位置插入空白列,列缩进●文件对比(Ediff)M-x ediff 对比按提示输入的文件A和文件BV 同步浏览两个文件j 跳到第一个不同的地方n 跳到下一个不同的地方n+j 跳到第j个不同的地方●文件(FILE)C-x C-f寻找一个文件C-x C-s储存这个文件C-x k关闭这个文件M-x customize-variable <Return> make-backup-files <Return>关掉文件备份●缓冲区(BUFFER)C-x C-b列出缓冲区C-x s保存多个缓冲区●被禁用的命令(DISABLED COMMANDS)空格确认要执行被禁用的命令n取消执行被禁用的命令●多窗格(MULTIPLE WINDOWS)C-x 2将屏幕水平划分成两个窗格C-x 3将屏幕垂直划分成两个窗格C-x 1只保留一个窗格C-M-v滚动另外一个窗格C-x o切换到另外的窗格C-x 4 C-f在一个新开窗格里打开文件●自动保存(AUTO SAVE)M-x recover file<Return>恢复你的自动保存文件,不是“#sample.file#”●状态栏(MODE LINE)M-x fundamental-mode切换到 Fundamental模式M-x auto fill mode<Return>切换自动折行模式C-x f配合数字参数来重新设定行边界M-q手动折行●递归编辑(RECURSIVE EDITING LEVELS)ESC ESC ESC离开递归编辑●获得更多帮助(GETTING MORE HELP)C-h然后再输入一个字符以说明需要什么帮助C-h ?查看所有帮助C-h c 组合键命令的简要说明。
教程简介本教程讲什么?第 1 页(共4 页)Emacs 是一个流行的无模式文本编辑器,有许多强大的功能。
本教程将教您使用 Emacs 的基础知识。
为了让您很快熟悉这个优秀的编辑器,本教程先讲述基本概念和常用操作,然后在这基础上提高。
要掌握使用 Emacs 的入门知识,需要经历陡峭的学习曲线。
我们的目的是帮您学会起初不熟悉的界面,这样,Emacs 的力量和用途就变得明显。
然后您就可以根据本教程末尾的参考资料和技巧,自己去深入研究。
谁应该学习本教程?第 2 页(共4 页)Emacs 的主要用户是程序员和 Web 开发者,他们要充分利用这个强大的灵活的文本编辑器,从而提高他们的效率。
另外,对于在 UNIX 或相似环境下履行管理职责的人来说,对 Emacs 的起码的一点熟悉是有用的。
在您开始前第 3 页(共4 页)在学习本教程的过程中,所有您需要的就是 Emacs 的副本,GNU Emacs 或 XEmacs。
如果您正在运行 Linux,那么您可能已经装入了它。
检查的方法是在命令行提示符后输入 emacs。
如果什么都没发生(或您得到“command not found”之类的消息),那么请用您的分发版附带的软件包工具来安装其中的一个软件包。
运行另一种操作系统?查看链接在上面的站点,找到您能用的 Emacs 版本。
作者简介第 4 页(共4 页)Brian Bilbrey 是系统管理员、Web 管理员、产品和 PWB 设计师、作家和 Linux 的倡导者。
他的名片被人读作 NPS,NPS 代表 No Particular Specialty,意思是“没有特别的专业”。
Brian 在日常工作中使用 Linux,象有些人换衣服一样换他的窗口管理器和喜欢的应用程序。
新的分发版就象面包和水那样不可或缺,目前,Brian 正在高兴地试用 Gentoo Linux。
他的 Linux 活动和其它经历的每日网页更新记录可在 找到。
EmacsOrgmode基础⽤法Emacs Org mode基础⽤法核⼼提⽰:本⽂主要讲述Emacs Org mode基础⽤法相关内容:Emacs Org mode基础⽤法,尽管Org-mode的功能不断丰富,现在已经可以记笔记,管理个⼈事务,制定项⽬计划以及很多其他的⽤途,但是最初和最基本的功能还是通过⼤纲(outline)的⽅式来编辑⽂档。
⽽且,⽆论是笔记管理,任务管理还是项⽬计划的编写,都是以对内容进⾏⾼效的组织(organization)为基础的。
1. ⽤⼤纲组织内容1. 定义标题2. ⼤纲相关的快捷键1. 折叠⼤纲2. 在⼤纲之间移动3. 基于⼤纲的编辑3. ⼤纲的显⽰⽅式2. 超链接和图⽂混排1. 创建链接2. 内部链接3. 显⽰图⽚4. 创建链接5. 内部链接6. 显⽰图⽚3. 轻量级标记语⾔1. 字体2. 表格1. 创建和转换表格2. 调整和区域移动3. 编辑⾏和列3. 段落4. 列表1. 列表操作快捷键5. 分隔线4. 标签1. tag的作⽤2. 标记tag3. 预定义tag4. 按tag搜索5. 导出和发布1. 准备⼯作1. ⽂档元数据2. 内容元数据3. 嵌⼊Html4. 包含⽂件5. 嵌⼊ LaTex2. 导出3. 发布1 ⽤⼤纲组织内容尽管Org-mode的功能不断丰富,现在已经可以记笔记,管理个⼈事务,制定项⽬计划以及很多其他的⽤途,但是最初和最基本的功能还是通过⼤纲(outline)的⽅式来编辑⽂档。
⽽且,⽆论是笔记管理,任务管理还是项⽬计划的编写,都是以对内容进⾏⾼效的组织(organization)为基础的。
在编辑⽂档,尤其是⼤型⽂档的时候,对内容的组织就显得尤为重要。
经常需要在⽂档中快速定位,只关注某⼀部分的内容, Word之类的编辑器,通过⽂档结构图来定位⽂档位置,速度很慢,⽽且很多时候不能满⾜编辑的需要。
尽管Word也提供了“⼤纲视图”,但是,唉……不说也罢,如果那个功能真的好⽤,也就不需要Omni Outliner了。
Emacs 快速指南(Emacs tutorial)。
Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation.Emacs 命令通常包含有 CONTROL 键(有时候以 CTRL 或 CTL 来标示)或是META 键(有时候以 EDIT 或 ALT 来标示)。
为了避免每一次都要写出其全名,我们将会使用下述的缩写:C-<chr> 表示当键入字符 <chr> 时按住 CONTROL 键。
因此,C-f 就是:按住 CONTROL 键再键入 f 。
M-<chr> 表示当键入字符 <chr> 时按住 META 或 EDIT 或 ALT 键。
如果没有 META 、 EDIT 或 ALT 键时,则可以用「按一下 ESC 键然后放开,再键入 <chr> 的步骤」来作为替代。
我们以 <ESC> 来表示 ESC 键。
重要备忘录:要退出 Emacs 会话(session),键入 C-x C-c (两个字符)。
位在左侧边界的「>>」字符是让您可以试著使用的命令的提示。
举例来说:<<Blank lines inserted around following line by help-with-tutorial>> [Middle of page left blank for didactic purposes. Text continues below]>> 现在键入 C-v (View next screen)以移到下个屏幕。
(试试看,键入字符 v 时,按住 CONTROL 键)从现在开始,您应该在每次阅读完目前的屏幕时做一次这个动作。
要注意的是,当您从一个屏幕移到另一个时,中间会有两行重复;这样做是为了提供一些连续性,让您可以接续地阅读文字。
Emacs从入门到精通不想再说废话了,既然你会阅读这篇文档,说明你多少对Emacs 有些兴趣,或者已经非常熟悉Emacs的基础操作了,并且希望有所提高。
因此我不需要再把'编辑器之神,还是神的编辑器'之类的恶俗话语放出来,来吸引你的好奇心。
下面的内容,从最基础的快捷键操作开始,一直到让你生活在Emacs中。
这中间没有跳跃,你只需要跟着我做,就可以了。
注意该文档就是用Org生成的,我会把.org源码和html文档一块打包。
关于什么是Org,怎么生成,且看后面的讲解2 Emacs 基础操作2.1 基本文件操作下面这些主要涉及了文件的基本操作,包括打开,新建,保存,另存为以及退出等比较常用的命令。
2.2 光标移动这里边最方便的就是句首句尾和行首行尾,因为我的是笔记本键盘,上下左右主要是用方向键,如果要是标准键盘的话,最好常用绑定键。
2.3 文本编辑这里面包括了复制粘贴剪切删除等常用的操作命令。
注意,在这里,移除包括了剪切和删除两个概念,要区分清楚。
2.4 一些重要的命令2.5 搜索2.6 窗口命令窗口命令比较常用,尤其是编辑多个文件的时候,你可以打开多个窗口,可以提高编辑效率。
2.7 帮助3 Emacs 基础定制每一次emacs启动的时候,它将加载一个名为~/.emacs的Lisp 代码文件,对该文件进行编辑是一种常用的定制emacs的方式。
下面是一个典型的Lisp语句:(setq column-number-mode t)(setqline-number-mode t)它的意思是在minibuffer上栏显示行列号。
其中,括号表示这是一个lisp函数调用,圆括号内第一个符号setq为emacs配置文件中常用的的函数,它为某个全局变量赋值。
该函数第一个参数为要设置的变量名,第二个数则是该变量的值。
下面讲到的每一行代码,你都可以直接拿到~/.emacs中使用。
当你想要了解某一行代码的作用时,可以把它复制粘贴到~/.emacs中,保存然后重启emacs就可以看到效果了。
Emacs编辑器基础教学第一章:什么是Emacs编辑器Emacs编辑器是一个功能强大的文本编辑器,广泛应用于编程、文档写作和其他各种计算机任务中。
Emacs自由软件基金会开发并于1976年首次发布。
Emacs编辑器的最大特点是高度可定制性和可扩展性,用户可以通过自定义配置文件来满足自己的需求。
第二章:Emacs编辑器的安装和介绍2.1 安装Emacs安装Emacs可以通过源代码或者预编译的二进制文件进行。
在Linux环境下,可以使用包管理器直接安装Emacs。
在Windows环境下,可以从Emacs官方网站上下载安装包进行安装。
2.2 用户界面介绍Emacs编辑器启动后,可以看到一个分为多个窗口的界面。
主要包括菜单栏、工具栏、编辑区域和模式栏。
编辑区域是用户编写代码或者文档的主要区域,模式栏显示当前模式或者特殊功能的状态。
第三章:Emacs编辑器的基本操作3.1 打开和保存文件通过菜单栏或者快捷键组合可以打开和保存文件。
用户可以使用Emacs编辑器打开文本文件、代码文件、各种配置文件等。
保存文件可以使用快捷键组合,也可以通过菜单栏中的保存选项实现。
3.2 基本文本编辑操作Emacs编辑器提供了丰富的基本文本编辑操作,包括复制、剪切、粘贴、撤销和重做等。
这些操作可以通过快捷键组合来实现,也可以通过菜单栏中的选项实现。
3.3 光标移动和选择文本在Emacs编辑器中,可以使用快捷键组合来移动光标的位置,如向上、向下、向左、向右等。
选择文本可以通过按住Shift键并移动光标来实现。
选中的文本可以进行复制、剪切和粘贴等操作。
第四章:Emacs编辑器的高级功能4.1 宏录制和执行Emacs编辑器提供了宏录制和执行功能,可以将一系列操作录制成宏,然后通过快捷键组合来执行宏。
宏录制功能可以提高编辑效率,减少重复操作。
4.2 多窗口编辑Emacs编辑器支持多窗口编辑,可以在同一个Emacs编辑器中打开多个文件并同时进行编辑。
【Linux】Emacs教程中文版Emacs的命令通常包括控制键(就是上面标有 Ct rl或C tl的那个)或者是MET A键(上面标有ED IT或AL T)。
为了方便起见我们将用下面的缩写来代替这些键的全称:C- 意思是当敲入字符时同时按住控制键,因此,C-f表示:按住控制键并且按f 。
M- 表示当键入时按住MET A 或ALT或EDIT键。
如果没有ME TA 或ALT或E DIT键,则用ESC键代替。
表示ESC键注意:退出Emac s,按C-x C-c(两个字符)。
在文本左边区域的“>>”符号表示让你试着使用一个命令。
比如:>> 现在键入C-v(观看下一屏)移动到下一屏。
(就象前面说的,按v的同时也按住控制键)。
从现在开始,每当你读完一屏的时候都可以用它来翻屏。
注意在翻屏后会保留上屏的最后一行;这是为你继续阅读文本提供某些连贯性。
你所需要知道的第一件事是如何把光标从一个地方移动到另一个地方。
你已经知道了如何向前翻一屏--用 C-v。
要向后翻一屏,键入M-v。
>> 试着键入M-v 和 C-v 几次。
* 摘要(SUMMAR Y)---------------------------下面几个命令对整屏观看时有用:C-v 向前翻一整屏。
M-v 向后翻一整屏。
C-l 清除屏幕并重新显示所有的文本,然后把光标移动到屏幕的中央。
(注意是C on trol-L,而不是 Contro l-1)。
>> 寻找光标,并且注意它在文本里的位置。
然后键入C-l。
再寻找光标你会注意到光标现在会出现在同样的文本附近。
* 基本光标控制(BASICCURSOR CONTRO L)-----------------------------------------------------------------整屏整屏的移动是很有用的,可是如何把光标移动到屏幕上文本里的一个指定的地方呢?有好几个方法可以实现。
使⽤emacs编写C语⾔教程如何使⽤emacs编写c语⾔程序,并编译运⾏vi和emacs被分别被称为编辑器之神和神之编辑器。
vi的⼊门精通都很难,emacs⼊门容易,精通难;vi使⽤起来不停地切换模式,⽽emacs则不停地ctrl,meta等组合键。
因此,⾼德纳⼤师说操作Emacs,就像弹奏管风琴。
vi是有模式的,因此他很少使⽤组合键,编辑起来确实要⾼效,⽽我厌烦不停的模式切换。
选择了emacs。
很巧,在国外,⼏乎所有的⼤师都是使⽤emacs的,James Gosling们(Java语⾔设计者),Donald Knuth们(),Jamie Zawinski们,Eric Benson 们。
我觉得真正的⼯程师⽤Emacs。
emacs是那种能让你⽤上100年的编辑器。
接下来介绍如何使⽤emacs来编写,编译,运⾏c程序。
(先声明下,这是写给初学者看的。
):1.进⼊emacs 后,C-x,C-f (意思是先按ctrl+x再接着按ctrl+f)找到⽂件或新建⽂件然后编写程序,如hello.c2.保存所编写的程序,命令是C-x,C-s,(先按ctrl+x,再按ctrl+s)3.编译程序。
通过命令M-x (alt+x)shell或M-x eshell进⾏shell模式,然后使⽤gcc -Wall -o hehe hehe.c进⾏编译,如果没有安装gcc,请先安装gcc5.切换回编辑区: c-x b 'buffername‘可以切换到某个buffer,如要切换回刚才那个hehe.c编辑区,输⼊c-x b "buffername"(例如先按ctrl+x 再输⼊b 再输⼊hehe.c)。
有⽊有发现,emacs⽐vi好⽤多了。
⼆、Emacs按键Vim 把控制和编辑分成了两个模式,单独操作,互不影响。
⽽Emacs是同时进⾏编辑和控制,只不过控制命令需要使⽤控制键。
Emacs的控制键就三个Control,Shift和 Meta,Control 和 Shift 键盘上都有,Meta 在美式键盘中就是Alt,在苹果键盘上是那个很花的四个圈的键,如果键盘上没有Alt (这个要某些欧洲⼈才会遇到)可以使⽤Esc 代替,另外Esc 不想Alt 通常当组合键⽤,它要单独按⼀下,再按另外的。
Emacs教程初步——轮子注:1.本文内容大都来自网络,我只时进行了分类编辑,版权属于原作者。
(公司内部使用,不要外传)2.如果你是第一次使用Emacs,可能感觉非常别扭,但不用担心,当你能够熟练使用一些基本操作后,你会喜欢上它的。
1.Emacs是什么Emacs是一种强大的文本编辑器,在程序员和其他以技术为主的计算机用户中广受欢迎。
Emacs,即Editor Macros(编辑器宏)的缩写,最初由Richard Stallman(理查德·马修·斯托曼)于1975年在MIT协同Guy Steele共同完成。
这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏文本编辑器。
自诞生以来,Emacs演化出了众多分支,其中使用最广泛的两种分别是:1984年由Richard Stallman发起并由他维护至今的GNU Emacs,以及1991年发起的XEmacs。
XEmacs 是GNU Emacs的分支,至今仍保持着相当的兼容性。
它们都使用了Emacs Lisp这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。
在Unix文化里,Emacs是黑客们关于编辑器优劣之争的两大主角之一,它的对手是vi。
2. Emacs的安装和配置2.1 安装1)源码安装:从/pub/gnu/emacs/下载源码安装2)在Ubuntu上用sudo apt-get install emacs安装2.2 配置在~/目录下有个隐藏的.emacs文件(如果没有,可以自己创建一个),这个就是Emacs 的配置文件。
Emacs在启动的时候会读.emacs文件,根据里面的配置设置启动后的状态。
配置文件的内容要用elisp语言编写。
在这里你可以设置自己的颜色主题,字体,快捷键,以及一些Emacs模式(如emacs wiki)的配置等等。
emacs 教程Emacs是一个功能强大且高度可定制的文本编辑器。
它是许多开发人员、程序员和技术工作者的首选工具之一。
本文将介绍Emacs的一些基本操作和常用功能。
1. 启动和退出Emacs要启动Emacs,只需在终端中输入"emacs"命令即可。
你也可以指定一个文件名,在启动时直接打开该文件。
要退出Emacs,可以使用以下命令:- 按下Ctrl+X Ctrl+C- 输入命令"save-buffers-kill-terminal"并按下回车键2. 基本的编辑操作- 打开文件:按下Ctrl+X Ctrl+F,然后键入文件路径并按下回车键。
- 保存文件:按下Ctrl+X Ctrl+S。
- 复制文本:按下Ctrl+Space选择文本,然后按下Ctrl+W。
- 粘贴文本:将光标移动到目标位置,按下Ctrl+Y。
- 撤销操作:按下Ctrl+_或Ctrl+/。
3. 导航和搜索- 移动光标:使用方向键或者按下Ctrl+N(向下移动一行)、Ctrl+P(向上移动一行)、Ctrl+F(向右移动一个字符)、Ctrl+B(向左移动一个字符)等。
- 移动到行首或行尾:按下Ctrl+A(行首)或Ctrl+E(行尾)。
- 搜索文本:按下Ctrl+S进入搜索模式,然后键入要搜索的文本并按下回车键。
按下Ctrl+S继续搜索下一个匹配项,按下Ctrl+R搜索上一个匹配项。
4. 标记和选中文本- 标记起始点:按下Ctrl+Space。
- 移动光标并选中文本:使用方向键。
- 复制选中的文本:按下Ctrl+W。
- 剪切选中的文本:按下Ctrl+X。
5. 更多的功能和自定义- 撤销操作栈:按下Ctrl+X Ctrl+U。
- 执行外部命令:按下Meta+X,然后输入外部命令并按下回车键。
- 自动完成:按下Meta+/补全当前输入的单词。
- 加载和使用插件:编辑Emacs配置文件,通常是~/.emacs文件,添加插件配置信息。
学习Emacs系列教程(⼀):基本使⽤前⾔的前⾔:本⼈也是初学Emacs,之前对Vim也只接触了⼀点,所以也谈不上对哪个更喜欢,也分不出哪个更好。
写这个教程的⽬的⼀是⽅便⾃⼰更好的学习Emacs,⼆是没事找事。
如果有专家路过还望多指点。
前⾔:⼤名⿍⿍的Emacs,传说中程序员的终极武器,已经跨越了⽂本编辑器,IDE的境界,可以替代操作系统GUI的东东。
怀着⼀种膜拜的⼼情我决定开始学习Emacs,期望有⼀天也能成为⼀代Emacs⼤侠。
参考书⽬:1. GNU Emacs Manual (Emacs 官⽹有下)2. O'Relly Learning GNU Emacs, 3rd Edition⼀、Emacs的安装使⽤学习软件的第⼀件事当然是把它下下来,⽬前最新版23.1,这个版本号够吓⼈的,Opera的10.0还不及别⼈的⼀半。
本⼈不幸,使⽤的是Windows版本。
安装过程异常简单,直接解压就⾏,但路径中不能包含空格,所以就表往Program Files⽂件夹下⾯丢了,我是直接放在根⽬录的,找起来也⽅便。
运⾏bin⽬录下的addpm.exe可以添加开始菜单快捷⽅式。
也可以直接运⾏runemacs.exe 来启动Emacs。
卸载也很⽅便,Emacs不会对系统写任何垃圾东东,直接删除⽂件夹即可卸载,还有你的快捷⽅式。
启动Emacs后的界⾯如下:猛的⼀看,没什么太出彩的地⽅,感觉⽐较简陋。
上⾯依次是标题栏、菜单栏、⼯具栏,中间⼀⼤块就是编辑⽂本的地⽅,下⾯两⾏是mode line 和echo area。
echo area是你输⼊命令和显⽰消息的地⽅。
在mode line中第⼀个字符表⽰字符集,c代表chinese-gbk,后⾯那个 \ 符号表⽰换⾏类型,\是指DOS的CRLF换⾏,另外还有Unix的LF 换⾏和Mac的CR换⾏。
然后⼀个字符,表⽰打开的⽂件是否可写(先称为⽂件便于理解,实际上是buffer),%表⽰只读,- 和 * 表⽰可写。
Emacs使用手册Emacs 启动:直接打e macs, 如果有X-windows就会开视窗. 如果不想用X 的版本,就用 e m acs -nw (No windows)起动.符号说明C-X 表示按住CTRL键, 然後按X, 再把CTRL, X一起放开.M-X META META在没有META键的电脑上, M-X 等於先按 ESC键, 接著按 X键.Sun上面META键就是菱形的那个键.有些系统META键就是ALT键.(或者某一边的ALT键)C-X或 M-X的X没有大小写分别.Emacs按键命令基本上是一串C-<c hr>和M-<c h r>组成的.超过两个以上的按键命令, Emacs会在萤幕最下面一行显示你按过什麽. 这一行叫作mi ni buffer结束Emacs按 C-x C-c取消执行 C-g有些Emacs命令会跑很久, 可以用C-g中断之. 按错键也可以按C-g取消.上下移动 C-p向上 (previous line) C-n向下(next line)左右移动 C-f 向右 (forwar d) C-b 向左 (backwar d)其实Emacs内部没有行的概念, 把一篇文章放在一个大b uffer里面, 所以C-f (forwar d)就是向档尾移动, C-b (backwar d)是移回去的意思, 一次一个字.翻页 下一页 C-v (view next screen)上一页 M-v翻页时,上一页末尾会留一点在萤幕最上面,以维持连续性.Emacs在游标接近萤幕最下方时会自动跳半页, 把档案往前挪一点,方便阅读.重画萤幕 C-LEmacs里面游标的专有名词叫p oint. point ==游标目前的 点游标一次跳一个字(word) M-f 往後跳 M-b注意 C-f 与 M-f, C-b 与 M-b的对称性.移到行头 C-a 行尾 C-e移到句首 M-a 到句尾 M-e(M-a 到上一个句点後面,一个句子的起头.M-e 到句点後面)移到档头 M-<档尾 M->删除游标目前指的/後面的字 C-d前面的字 DEL (Delete键)DEL的正名叫Rubout (Rub out)M-DEL 往回删一个字(word)M-d往前删 (游标後面)C-k 删至行尾 (kill)M-k 删到一句子结尾(删到句点) (kill)注意Backspace = C-h在Emacs下是help的意思後面有(kill)的, 表示此删除的动作是kill, 不太等於delete.e m acs会把kill掉的东西放到kill ring去, 算是一种暂存的地方,以後可以叫出来.见 yank说明.Undo: C-x uC-_ 等於 C-x u有些DEC终端机, C-/就是C-_有时等於C-Shift- -重复执行举例, 向右移 8个字, C-u 8 C-fC-u在Emacs里是蛮特别的,用来设定一些引数(argu ment/re peat count) 给其後的命令.C-u 2 0 C-n向下移 20行有一个特别的例外, C-u 3 C-v 不是翻三页, 而是整个萤幕向上移三行.C-u 1 0 C-x u UNDO 10次给C-L一个引数会怎麽样:C-u 0 C-l 会重画萤幕,并且把目前的行移到萤幕第一行.另外, C-u 100 等於 M-100C-u数字 等於 M-数字X windows 下,C-left C-right 一次移一个字(word).C-u p C-down 移动一段 (paragra p hs/C语言的话是block) Home = C-aEnd = C-eC-Home = M-<C-en d = M->PgUp PgDn = M-v C-v设定重覆次数更加简单,比如要向右移10个字 C-1 C-0 right-arrow就是按住CTRL, 然後打10就对了, 比 C-u 1 0 简单.Mouse中键用来选取有hi-light的地方.右键是m e n u-button如果不小心按两次ESC, 等於 M-ESC, 会有一个讯息跑出来说你按到一个被disable的命令. 这是高级指令, 作者认为初学者用不道,所以会问你要不要启动它, 一般回答no.如果某一行太长, 萤幕显示不下, Emacs会在萤幕最右边打个$, 表示此行未完,右边还有.把一行拆成两行: 在想拆处按Enter即可.合并两行为一行: 在行尾按C-d (或行首按DEL)Yank: 吐出被删掉的(killed)东西.只要用kill (C-k, M-k等) 删除, 超过一个字的资料,e m acs就会把它存起来, 然後C-y 可以把它叫出来.功能跟Cut & Paste一样. Kill 和delete不一样, 只有被kill掉的东西才能用yank吐回来.游标在同一地方不动, 连续kill掉的资料会被当成一次kill掉的,被Kill掉的资料是放在称作 kill ring的资料结构上面, ring就是个圆圈, 被kill掉的东西会依序摆在圆圈上. yank 会放回最近一次kill掉的资料. 如果不是你想要的话, 用M-y 可以换. (M-y就是告诉e macs, 不对不对, 我不是要这一个,换前一个给我).M-y 要紧接在C-y之後.拷贝文字的方法==连续 C-k 几次, 把要拷贝的行全部删掉,然後按 C-y 弄回来. 再到想复制的地方按一次C-y, 就成了.把要拷贝的资料kill掉在yank回来好像很笨. 是有比较文明的方法, 那就是M-w, 不过较麻烦.首先,要先设标记. Mark 用 C-SPC 或 C-@ 设. 然候把游标移到另一端, 按 M-w 就可以把 m a rk 到 point间的字存到kill ring上. point 就是游标的意思.Emacs不会把Mark起来的地方用highlight表示, 除非在X下.在X下, 可以用M-w 来拷贝用滑鼠反白的文字.kill & yank 就是 cut & paste的意思.以上大部份指令对Bash的命令列编辑也有效档案操作读档: Emacs术语叫 finding a file.C-x C-f 然後在mini-b uffer输入档名. 输入档名时, SPC键有auto-co m plete的功能,或者会秀出到目前为止档名前几个字和输入一样的. (TAB键也有类似功能)C-x C-f 叫 find-fileC-x C-s 存档 (save current file, save current b uffer)C-x s 存所有的档C-x i 插入档案 把另外的档案的内容读入目前编辑区内视窗Emacs把档案读进来,存在b uffer中.我们透过window来看/编辑buffer.两个视窗会把萤幕切成两部份, 他们可以同时显示相同的, 或不同的档案.对初学者而言, 最需要的是记住怎样让不想要的视窗消失:C-x 0 关掉目前的视窗C-x 1 会让目前的视窗占满整个萤幕 (One Window),取消/关掉其他的视窗.Emacs里面有许多功能都会开一个小视窗来和使用者沟通, 显示讯息.有时候不会自动消失很讨厌, C-x 1 就很有用.另一个功能是如何跳到另一个视窗.C-x o (other-window)C-x 2 把目前的视窗切成两个 (水平分割)C-x 3 (垂直分割)C-x 4 是一串与视窗有关的指令.C-x 4 是一串与视窗有关的指令.C-x 5 则是扩展到X的视窗, 称为fra me.C-x 5 2 就是再开另一个X视窗 (fra me).多档编辑C-x C-b 看目前有那些buffer (buffer就是e macs放开起的档案的地方). C-x b 然後在minibuffer输入buffer的名字,可以切换编辑buffer.TAB键也有作用. 有些内部的buffer (就是没有档案的buffer), 是用*开头和结束, 这个也要打, 如*scratch*最候提醒:C-x 1 可以把多馀的视窗关掉.Emacs扩充指令前面介绍的e m acs按键大部份都是C-<c hr>或者 M-<c h r>的形式.这是最简单的按法, 由一对按键构成一个指令.Emacs的按键可以超过2个以上. 如 C-x 1 或 C-x C-b.一般超过一个按键组合的命令都是用C-x 开头.令来执行. 一般这些命令名字都很长, 不过都不常用. 等一下我们会介绍一些. 还有介绍怎麽把这些命令设成按键指令.C-x C-c 就是结束Emacs. 不过一般Emacs很笨重, 一旦起动就不轻易退出. 所以比较常用的是C-zC-z把Emacs暂停, 回到命令列. 当你下次再需要编辑时,打fg %emacs就可以把Emacs唤醒.在X下, C-z会把e macs缩成iconm o de linee m acs编辑画面由编辑区(buffer) 状态列(modeline) 和对话区(minibuffer) 构成. 这里解释m o deline 显示的讯息.以下是个范例:--**-XEmacs: xemacs.qs (Funda me n tal)----74%-------由後面往前解释, 74% 表示游标的位置.(Funda me n tal)表示编辑模式.这是最原始的模式. 编辑不同种类的文章可能希望用不同的模式, 比如说C-m o de, lisp-m o de, tex-m o de, text-m o de 等等. 在不同模式下可能多一些按键出来. 举例text-m o de.M-x text-m o de可以切入text-m o de, 这是一般人编辑文字使用的模式. 和Funda me ntal m o de 没什麽差异. 不过游标移动时, Emacs对一个字的定义就有所不同, 因而M-f M-b 等移动一个字, 一个段落的指令就可能会停在标点符号的前面.此时状态列变为... (Text)----70%---以上说的是Major m o de. 另外还有mi nor m o de, 其实就是一些额外的功能.比如说, M-x auto-fill-m o de 则状态列显示 (Text Fill).auto-fill就是自动断行, 让文章每行固定有70个字.M-X fun da me ntal-m o de 可以变回来.这里要说明一下, e macs在 mi nibuffer下有auto-co m pletion的功能,也就是打M-x fun d然後按 SPC, 它会自动补全fun da me ntal-m o de,不用全打. 如果有两个以上的选择, 它会告诉你. 这个功能对find-file (C-x C-f)等等档案编辑功能也有效. 前面提过.左边的* 表示这个编辑区(buffer)可以修改.有一些e macs的buffer是rea d-only buffer, 就会标成%%%表示档案是rea d-only.C-x C-q 可以解开rea d-only的锁定, 无论如何你要改这个编辑区.这是个toggle指令, 如果原来是可以修改的, C-x C-q会把它切成rea d-only.Search没有Search 功能的编辑器简直就是小朋友的玩具. Search是一项很重要的功能, 所以e macs也提供的很完善.C-sC-rM-x re-search-forwardM-x re-search-backwar dM-x search-forwar dM-x search-backwar d以上这些指令是基本的search指令. C-s, C-r是increa mental search,就是你打字的同时, e m acs就直接帮你找. 一个是forward, 一个是backward. 找到了怎麽办? 按C-g可以取消搜寻, 跳回原来的位置. 按Enter就让游标停在找到的地方 --此时minibuffer显示:Mark saved where search started 什麽意思? 就是isearch帮你在原来的位置设了一个m a rk, 然後把point (cursor) 移到新的位置.想跳回去原先的地方?C-x C-x 就可以了.(exchange-point-an d-m a rk)C-u C-SPC 可以依序跳回前几次设m a rk的地方.(C-SPC是设m a rk, 给它一个argu me nt, 就是反动作)(还记不记得C-u可以给後面的指令设一些参数.有些指令拿这个参数来当作re peat cou nt,有些指令就只拿来当作on/off, tr ue/false, set/clear而已)M-x re-search-forwar d可以让你用regular expression搜寻.M-x search-forward则没有increa me ntal的功能.另外一个指令, 作用和grep很像:M-x occure和search相提并论的就是re place.M-x re place 然後按 SPC, 就知道了.Emacs的设定档是 $HOME/.e macs你应该多少知道, e macs是用lisp写成的编辑器, .emacs档也都是要用lisp的语法设定. e m acs用的lisp称为elisp, 和一般的lisp差一点点.有一个info page, e m acs-lisp-intro, 深入浅出的介绍e m acs lisp.如果你还不会, 不懂p rogra m ming, 强烈建议你看这份文件. 如果你会texinfo, 你可以把它很漂亮的印出来. (内容一点点而已, 两三天就看完了)如果你把.emacs搞砸了, 进e m acs很奇怪, 怎麽办?1. 用 vi 改.emacs :>2. e m acs -q 进e m acsMajor Modes一般常见的e m acs m ajor m o de有fun da me ntal-m o detext-m o delisp-m o de 有自动对括号/重排, 直接执行lisp code功能.c-m o de/cc-m o de c-m o de是比较旧的c-m o de, cc-m o de应该是 目前新的c-m o de. 有自动重排/对括号的功能.也可以在e macs内co m pile, 跳到co m piler error修正错误. 执行程式时deb ug. (配合d bx/g db)co m pile是透过Makefile进行.tex-m o de Tex/Latex编辑模示. 可能是打一些奇怪的标点符号比较方便.<p r ogra m ming-language>-m o de同lisp/cc-m o de. 如果是interpreter的话,e m acs通常都可以直接执行/d e b ug.<p r ogra m ming-language>-m o de还有tags的功能, 後述.h t ml-m o de, texinfo-m o de, sg ml-m o de: 编写h t ml, texi, sg ml之用. w3-m o de WWW browser. 在x-win上不满意,但可以接受...TagsTags 是一个显为人知的功能? 所以我想提一下. 这不是e macs发明的,而是vi 原本的特异功能. e m acs只是发扬光大而已.假设你有一个目录, 里面是一个程式的原始码, 比如说, tin 的原始码,放在 ~/ti n-1.3beta 下面. 你想看它们.首先, 叫e m acs cd到该目录:M-x cd然後, 建立tag table.tag table 就是一张对照表, 记录哪个符号(variable/f u nction call)对映到哪个档案的哪个地方. 有这张表, e macs可以让我们快速的在程式码内游走. 一般这张表是一个档案, 叫作TAGS (大写)M-! etags *.[ch]M-! 是执行external shell co m m a n d的意思. etags就是e m acs的建表程式. 你只要告诉它你的so urce code在那□即可.vi的话是使用ctags这个程式, 它建出来的档名叫tags (小写). 因为我们介绍e macs, 所以不管它.然後, 怎麽看程式? 你知道所有的C 程式都是由m ain()开始, 所以你想找到m ain()在哪个档案. 这时只要按 M-. 然後e m acs会问你tag table在哪里. 因为我们已经cd到该目录, 直接按enter就好了. 然後输入m ain,e m acs就会把你带到m ain(){ ... }去.如果 你看到某个程式片断呼叫一个你没看过的函式, 你可以把游标移到该函式的名字上, M-. ENTER 就搞定了.如果 e m acs找错了 (比如有变数和函式同名, e m acs跳到变数去),那你可以用 C-u M-. 找下一个.在编辑程式码的时候, M-SPC 很有用, 它会把游标附近的空白缩成一个.在其它地方也有效.Emacs的一些p ackage:M-x dire d (或C-x d)游走/编辑 目录, 就是档案总管的意思 :)M-x m a n就是m a n pageM-x s hell 开个co m m a n d p ro m p t, 不过不能跑vi,elm, tin...M-x gnus 读新闻/读信M-x r m ail 读信M-x vm view m ailM-x m h-r m ail 读信(package m h-e)M-x m h-s mail 送信(package m h-e)强列建议改用e m acs读news/b bs. 世界会更美好!读信的话就要看你的感觉. 这些读信程式都会把信从系统的m ail folder搬到自己的目录下, 占用q uota, 我不喜欢:p 建议elm或m u t t.除非参加m ailling list配合p roc mail. 不然不实用.用m h-e 须要装m h这个外部程式, 不太好. 建议vm 或 gnus.写完信, C-c C-c 就可以送信.如果你的资料用rcs/sccs作版本管理, e m acs自动会起动version control (minor m o de.), c-x c-q 变成check-in/c heck-out.如何取得更多的资讯:Emacs的lisp 经过多年的发展,已成为完整的self-docu me nting系统.很多东西都可以线上找到你要的资讯.前面说过,或者你已经不小心按backspace遇到了, C-h (就是backspace 的ascii码) 在e m acs里面是help的意思, 它可以带出一串指令.常用的有:C-h F Emacs FAQC-h t Emacs 使用教学C-h n Emacs NEWS file, 介绍最近改版的新功能C-h i Info syste m. Info是gnu用来取代m a n page的系统, 基本上和文字模示的WWW差不多. 有许多重要的资讯可以在这边找到. 如果你是新手, 建议你在x-win下看. 不然, 按键 m (men uite m), SPC next pagel (last no de: no de就是章节的意思) u (up no de)d (directory, 索引). BS (Backspace, back a p age).如果全部只按SPC, 就跟m a n一样.C-h k describe key, 告诉你按这个键执行那个lisp function.C-h f describe function. 告诉你function在作什麽.如果只按SPC, e macs会给你所有lisp 函数的列表, 和说明.C-h v describe variable 同function.C-h a apro pos的意思(approximate). 给lisp function的部份字串, e macs帮你找.C-h b 列出目前所有的keybin dingC-h m m o de help. 列出目前的m o de的特殊说明.C-c C-h列出以C-c 开头的所有key-binding. 虽然说Emacs 可以定义按键, 可是Ctrl-开头的所有组合大概都用光了,目前的convention是C-c <c h r>留给u ser, C-c C-<c hr>留给p ackage.有以上这些help, 你的e m acs/elisp功力会随著时间成长.Elisp 简介:Emacs有三份手册.第一份是使用手册, 第二份是Elisp 手册, 第三份是 Elisp 简介. 第三份的程度是入门级, 值得看. Elisp手册其实也写的很简单, 还教你lisp, 不过有点长, 适合参考.因为我lisp没有仔细学过, 所以:以下所言, 如有巧合, 那才是真的.Basic data type字串 (string) "Hello, World"字元(char) ?a ; 问号开头ato m & list:(1 2 3 4) 是一个list, 由4个 ato m组成.p air: 中间是句点.(apple . 2)alist (associated list)就是一堆pair的集合,就像perl/tcl的associative array.或者说是一个资料库, 一堆(key, value) pair.'((Apple . 1)(Orange . 2)(PineAp ple . 3))vector (?)e macs 19用vector 来表示按键(key strok sequence)[f1] [f2] [f1 a]nil 就是空的list, 或者表示 falset trueForm s我们写程式最好有样版让我们填空最简单了.Form就是样版, 不过意义不太一样.Form就是Elisp 可以接受的句型.lisp 解译器预设是对list的每个元素求值(evaluate),除非是 s pecial for m, 有特殊的定义. 比如说(defun FUNC (ARG-LIST)BODY ...)就是一个s pecial for m, 用来定义函式, 所以FUNC 不会被求值, 被当成sy m bol, ...(quote (LIST))这也是个s pecial for m, 叫 lisp 把 (LIST)当做sy mbol就好了,不要 evaluate.q uote 很常用, 所以有个缩写:'(LIST) 等於 (quote (LIST))'Asymbol 可以表示一个Ato m, 名称叫Asymbolset 可以产生/定义新的变数.(set 'hello 1); hello = 1; 注意我们用 'hello, 所以lisp不会evaluate hello的值.这家伙很常用, 也有简写.(setq hello 1)setq 就是set q uote 的缩写. 这是个 s pecial for m, 不会对第二个元素求值.valuation在Emacs下, C-x C-e 可以执行(evaluate, 求值)游标左边的叙述.结果会出现在mi nibuffer.lisp-interaction-m o de中 C-j 可以evaluate, 并且把结果ap pe n d到 buffer.lisp 程式由一堆list 构成.称为expression.每个expression 都回传回一个值.有些expression有副作用, 如删掉一个字.(这跟C 的int delete_char() 意思一样, 它传回int,并且删掉某个char)定义函式:(defun NAME (ARGS-LIST)"注解" ; o ptional(interactive) ; op tionalBODY)定义一个叫NAME的函式. BODY 是一堆expression.注解是用来给C-h f显示的.(interactive) 表示这个函示会和u ser/b uffer作用.(interactive "B") 表示执行此函式先问u ser一个b uffer的名字,然後当作参数传给它. (如, 当u ser透过key-bin ding或者 M-x 呼叫此函式时)(interactive "BAppen d to b uffer: \n r")问u ser b uffer na me时, 提示号 Appen d to b uffer:此function有两个引数,第一个是B, 就是buffer第二个是r, region用\n隔开.(interactive "p") 用C-u设的p refix 把它当作参数传给我.预设值==4. C-u C-f 向右移四个字一些lisp 函式:(list 1 2 3 4) 产生'(1 2 3 4)(car '(1 2 3 4) 1(cdr '(1 2 3 4) '(2 3 4)(cons 1 '(2 3 4)) '(1 2 3 4)(cons 1 2) (1 . 2)(cons 0 (cons 1 (cons 2 nil)))等於 '(0 1 2){list 是用 pair 串起来的,用C 表示:pair: {Object *first, Object *secon d};*(pair[i].first) == i;pair[i].secon d == pair[i+1]; }(cons '(1 2) '(3 4)) '((1 2) 3 4)(setq a 1)(1+ a) ; a+1(+ 2 a) ; a+2(* 1 2 3 4)(current-buffer) ; 传回目前b uffer的资料物件(switch-to-b uffer (other-b uffer))(set-buffer)(buffer-size)(setq current-p os (point))(point-min)(point-m ax)(message "Hello") ; 在mi nibuffer显示Hello(if (test)(then-part)(else-p art))(cond ((test1) BODY1)((test2) BODY2)(t OTHER-WISE)(let ((var1 value) ; local variablevar2 ; no value(var3 value)...)BODY ...)(lamb da (ARG-LIST) ...) 同 defu n, 但是没有名字 (anony mo u s).可以存到变数去:(setq hello (lamb da () (message "Hello,World")))(funcall hello)(goto-char (point-m ax))(defvar VAR VALUE "*注解") 如果VAR 不存在才定义. 有注解可以用 C-h v 看. 注解打*号表是使用者可以直接改/这个变数本来就是 给使用者设定用的.可以用 M-x edit-options 来线上设定 (emacs结束就没有了,不过edit-o ptions可以给你所有可修改的变数的列表,你可以放到.emacs档内.(directory-files "./" t "\\..*")ret ur n a list of files u n der directory X(load "xxxx.el") 同#include <s t dio.h>给使用者设定用的.可以用 M-x edit-options 来线上设定 (emacs结束就没有了,不过edit-o ptions可以给你所有可修改的变数的列表,你可以放到.emacs档内.(directory-files "./" t "\\..*")ret ur n a list of files u n der directory X(load "xxxx.el") 同#include <s t dio.h>(setq load-p at h (cons "~/e m acs" load-pat h)) ; load的search p at h. (autoloa d ...) 不像load会直接evaluate 整个档案, 而是需要时再load.(local-u n set-key [(control c)])(local-set-key [(control c) a] 'forwar d-sexp)sexp 就是一个expession, n个expression如果用括号括起来就算一个. (expression的定义随语言的不同而有不同, 在C, lisptex, h t ml, fortra n 下皆有差异)。
emacs最简单⼊门,只要10分钟macs最简单⼊门,只要10分钟windwiny @2013⽆聊的时候⼜看到⿎吹emacs的⽂章,以前也有⼏次想尝试,结果都是玩不到10分钟就退出删除了。
这次硬着头⽪,打开⼏篇⽂章都看完⼀遍,再动⼿操作。
这次好像有些进展最⼤的发现,emacs⾥所有操作都是LISP指令,包括上下左右移动光标,这意味着什么? “emacs是⼀个伪装成编辑器的操作系统”这句话应该就是这么理解吧,所有的操作都是指令,emacs就像操作系统⼀样,平时不⽤关注,实际上打交道的都是操作系统上运⾏的各种程序。
emacs也是这样,执⾏LISP函数就⾏了,增加各种插件就是增加LISP的函数让你调⽤⽽已,各⼈的配置就是把各种指令绑定快捷键,⽅便⾃⼰使⽤。
emacs的插件功能有执⾏shell命令,telnet,ftp,⽂件管理器,收邮件,浏览⽹页,煮咖啡,擦⽪鞋,等等。
前段时间⼜受到⿊客与画家书的⿎吹,买了本CLISP的书看,对emacs⽤的LISP也是越看越顺眼了。
忘掉⽹上其它的那些教程、⼿册吧,也忘掉emacs有⼏百种⼏千种命令吧。
emacs最简单⼊门:只要记住⼀个按键就⾏了: M-x . 按住Alt键再按x,在窗⼝最底下出现M-x的提⽰,在这⾥输⼊left-⼏个字符,按Tab键,出现两⾏提⽰ left-char, left-word,再输⼊⼀个c,再按Tab键,这时⾃动补全为left-char,按回车,如果有内容的话,当前的光标点向左移动,就像按了⼀个向左的⽅向键⼀样。
就这样?就这样!就这样,发挥你的想象⼒,想象你现在需要做什么,把它翻译成英⽂单词,按 M-x,先输⼊⼏个字母,按Tab,看是否存在你想象中的指令。
要取消当前操作的指令,多按⼏次ESC键或Ctrl-g键就取消了。
现在假设下emacs有100条指令吧,你如果想做什么事都去执⾏指令的话,虽然也可以,但是总⽐不上为常⽤的指令设置⼀个快捷键⽅便。
教程简介本教程讲什么?第 1 页(共4 页)Emacs 是一个流行的无模式文本编辑器,有许多强大的功能。
本教程将教您使用 Emacs 的基础知识。
为了让您很快熟悉这个优秀的编辑器,本教程先讲述基本概念和常用操作,然后在这基础上提高。
要掌握使用 Emacs 的入门知识,需要经历陡峭的学习曲线。
我们的目的是帮您学会起初不熟悉的界面,这样,Emacs 的力量和用途就变得明显。
然后您就可以根据本教程末尾的参考资料和技巧,自己去深入研究。
谁应该学习本教程?第 2 页(共4 页)Emacs 的主要用户是程序员和 Web 开发者,他们要充分利用这个强大的灵活的文本编辑器,从而提高他们的效率。
另外,对于在 UNIX 或相似环境下履行管理职责的人来说,对 Emacs 的起码的一点熟悉是有用的。
在您开始前第 3 页(共4 页)在学习本教程的过程中,所有您需要的就是 Emacs 的副本,GNU Emacs 或 XEmacs。
如果您正在运行 Linux,那么您可能已经装入了它。
检查的方法是在命令行提示符后输入 emacs。
如果什么都没发生(或您得到“command not found”之类的消息),那么请用您的分发版附带的软件包工具来安装其中的一个软件包。
运行另一种操作系统?查看链接在上面的站点,找到您能用的 Emacs 版本。
作者简介第 4 页(共4 页)Brian Bilbrey 是系统管理员、Web 管理员、产品和 PWB 设计师、作家和 Linux 的倡导者。
他的名片被人读作 NPS,NPS 代表 No Particular Specialty,意思是“没有特别的专业”。
Brian 在日常工作中使用 Linux,象有些人换衣服一样换他的窗口管理器和喜欢的应用程序。
新的分发版就象面包和水那样不可或缺,目前,Brian 正在高兴地试用 Gentoo Linux。
他的 Linux 活动和其它经历的每日网页更新记录可在 找到。
如果您对本教程有技术问题,请和 Brian 联系:bilbrey@。
起源概述第 1 页(共3 页)在本教程中,我们将很快地讲述许多知识。
首先我们要讲 Emacs 是什么和它的起源。
然后,我们马上开始讲该编辑器的使用:击键、命令、Emacs 环境和您起步所需的一些基本命令。
我将为您展示添加和删除文本、剪切(kill)和粘贴(yank)文本的各种方法。
下一步,我们将介绍 Emacs 的光标移动系统。
然后将讲搜索和替换功能。
接着,我将向您展示 Emacs 对文件和缓冲区的作用。
在结束本教程前,我将粗略地讲述只有在 Emacs 中才能找到的高级功能和额外的特性,包括模式、代码编写、连接和游戏。
在学完本教程后,您将舒适地在 Emacs 环境中工作,感受到通过它您所能得到的力量。
我们开始吧。
Emacs 是什么?第 2 页(共3 页)根据 的描述,Emacs 是可扩展的、可定制的、自我编制文档实时显示的编辑器。
它提供真正的 LISP ―平滑地集成进编辑器―用于编写扩展并提供一个基于 X Window 系统的界面。
曾有人说(恐怕不是完全在开玩笑)Emacs 能很好地完成太多的不同工作,以至于它快成为不错的操作系统―就缺一个象样的文本编辑器。
但认真地说:Emacs 是一个健壮的可扩展的文本编辑环境。
它在设计时被加入很多很多东西,包括编译和调试界面、电子邮件、游戏和 Eliza。
特别对于那些以写作或/和写代码为生的人来说,可以很容易地在早上启动几个 Emacs 会话,开始工作,一整天不运行其它应用程序,本教程故此得名:生活在 Emacs 中。
起源和其它选择第 3 页(共3 页)最初的 Emacs 是由 Richard Stallman 在 20 世纪 70 年代为在 Massachusetts Institute for Technology 的 Incompatible Timesharing System(ITS)而写的。
最早在 1984 年发布的 GNU Emacs 也是才华横溢的 Richard Stallman 的杰作。
GNU Emacs 可从 得到,授权方式是自由软件基金会(Free Software Foundation)的 GNU GPL(请查阅参考资料找到链接)。
GNU Emacs 有一个主要的“竞争者”― XEmacs ―它是 Emacs 代码库的一个分支的结果。
这个分支发生在很久以前,虽然用户界面的主要部分相同或很相似,但是下层的扩展和 LISP 代码是不兼容的。
然而,两者之间的移植是可能的。
许多 Linux 分发版有这两种版本的 Emacs,根据出版者的选择,其中一个版本的安装优先于另一个。
例如在 Debian 中,如果您选择安装 Emacs,Debian 将安装 GNU Emacs,Red Hat 7.2 也是这样。
上一次我安装 Caldera OpenLinux 时,它默认为 XEmacs。
在本教程中,我们的描述、示例和抓屏是根据 GNU Emacs。
请把您的 Web 浏览器指向 /software/emacs/emacs.html 查找更多细节。
开始学用EmacsEmacs 击键约定第 1 页(共5 页)Emacs 自身的文档有独特的方式来描述用于定义操作的击键,如下:C-<chr>; == Ctrl + 字符,同时按。
M-<chr>; == Meta + 字符,同时按。
但是,什么是 Meta?Meta 可以是一个专用键(有时这样标记),它可能是 Alt 键,它也可能在您系统所用的键映射表(keymap)中根本不存在。
那没关系;Meta 有替代键,就是先按 Esc 键,再按后面的字符键(而不是一起按)。
这样产生的结果和 M-<chr>; 相同。
现在启动您的 Emacs(或 XEmacs)副本,让我们快点取得进展。
第一步,在终端或控制台中输入 emacs practice1.text。
命令和键绑定第 2 页(共5 页)Emacs 实现了一个版本 LISP,一种线程语言,用于构建它的命令和扩展。
所有的命令都有名字,例如 Buffer-menu-bury、backward-char 和 forward-paragraph。
尽管它们被有逻辑地排列和命名,但是在我当前的安装中它们的数量超过 1800 个,那需要输入很多。
这就是为什么许多命令要和以 Ctrl 和 Meta 键开头的键组合绑定的原因。
调用一个有名字的命令的方法是先输入 M-x,再输入命令名。
得到键绑定列表的长格式命令是 M-x describe-bindings。
幸运的是它有一个键绑定:C-h b。
切换到列表窗口按 C-x o,递增的搜索按 C-s,切换回您的工作窗口按 C-x o,关闭除当前缓冲区以外的所有窗口按 C-x 1。
试一试这些命令,看一看其中的一些―大约共有 600 个键绑定。
不要担心我们在这次短途旅行中用到的命令,我们到时候将在本教程后半部重访所有这些命令。
第一指示第 3 页(共5 页)退出:我第一次使用 Emacs 时,我发现我迷失在文档中的某处或肯定不是由我自己打开的混乱的缓冲区中或其它什么地方。
在那时,所有我所想做的就是退出系统,这样我可以重新再来,找出我在哪里错了。
您可以输入以下击键序列来退出 Emacs:C-x C-c。
根据您在前面一屏看到的击键约定,它的意思是按 Ctrl + x,再按 Ctrl + c。
如果您更改了任何打开的文件,那么 Emacs 将提示您,例如:Save file /home/bilbrey/practice1.txt? (y, n, !, ., q,C-r or C-h)如果我做了我在乎的修改,我将对这样的提示回答 y。
如果按 !,就直接退出了,什么也没保存。
Emacs 启动后,打开现有的文件的方法是按 C-x C-f 来查找文件并把它装入缓冲区。
另一方面,我常常想保存我已完成的工作再继续输入。
保存我的工作再继续的击键组合是 C-x C-s。
Emacs 视图,第 1 部分第 4 页(共5 页)所有的 Emacs 和 XEmacs 屏幕有三个主要的部分:缓冲区、状态栏和位于底部的小缓冲区。
本教程的 XML 格式的版本出现在下图中。
Emacs 视图,第 2 部分第 5 页(共5 页)前面一屏中的抓屏来自 GNU Emacs 的可使用 X 的版本。
在那张视图中与仅有文本模式的版本(例如在控制台或终端窗口中)无关的部分是上部的 GUI 按钮菜单和可使用鼠标的滚动条(在多数情况下)。
主要的编辑窗口可被分割成两个或更多个窗口,这些窗口可以是同一个缓冲区(文件)的视图,也可以是不同的缓冲区的视图。
请参阅 Emacs 中的窗口这一屏获取更多信息。
在起初的配置中,编辑窗口的底部分界处有一个状态栏(也被称为模式栏)。
有多个可见窗口的时候,每个窗口有自己的状态栏。
状态栏中有缓冲区中的文本是否被更改的指示器、与名字关联的文件名、模式(显示在前面抓屏中的是 SGML)、当前的行号和用全部文本的百分比来表示的光标位置。
模式指示的是 Emacs 所认为的它正在工作的文本的类型并相应地修改菜单和功能。
抓屏中包含 [Wrote...] 消息的底部那行被称为小缓冲区。
它被用来显示输入了一半的命令和命令的运行结果,有时还显示一点点帮助。
插入文本第 1 页(共6 页)从某种重要意义上说,Emacs 是很容易的。
无需进入插入模式或从任何特别命令模式中退出―直接输入,您就已经在插入文本了。
让我们在这里重申一件事:使用“保存缓冲区”命令尽早地经常地保存您的工作:C-x C-s。
您喜欢这样吗?这是本教程中最短最容易的一屏。
现在深呼吸一次,我们将进入删除文本。
基本的删除和撤销第 2 页(共6 页)删除文本的方法有两种。
在这屏中,我们将讲第一种:字符删除。
您很可能已经习惯了单独字符的删除方式:使用 Delete 键或 Backspace 键。
在 Emacs 中,至少有一个击键和 Delete 等同:C-d 删除光标下的字符。
撤销字符删除的方法是使用 C-x u 命令或真正的速写,C-_。
对于多次撤销来说,后者更方便。
现在练习一下这些操作从而开始您的手指在 Emacs 中的训练。
注意:我读过的有些文档指出 Delete 键应该向后删除(backspace 或和 ^H 等同的击键)而 C-d 替代了 Delete。
这取决于您的操作设置和终端配置。
删除的字符被保存在缓冲区中,只是用于撤销,您只能通过撤销删除后的所有更改来得到那些修改。
用于多字符区域的更“高级”形式的删除被同时保存到另一个不同的结构中,我们接下来将学习它。
Emacs 剪切和粘贴,第 1 部分第 3 页(共6 页)下面是您删除比较大的块时需要用的命令(它被称为“杀死”):键绑定操作(命令)M-d kill-wordM-Delete backward-kill-wordM-k kill-sentenceC-x Delete backward-kill-sentenceC-k kill-lineC-k 的使用有一点窍门。