Emacs入门教程(3)

通过前两篇文章的学习,您已经可以把Emacs当作一个Better-Notepad来使用了。今天我们要学习的是Emacs中强大的搜索功能。

默认情况下,Emacs采用了一种很待殊的”增量搜索”的功能,虽然它与我们常用的搜索方法在操作习惯上有很大的不同,但习惯后确实是十分的方便。

要让Emacs开始执行搜索,可以按C-s或C-r,前者是从光标位置往后查找,后者则是往前查找。我们以C-s为例。按动C-s 后,Emacs在 Minibuffer中提示: I-Search:,这时您便可以输入要搜索的关键字了,现在学习试验的阶段建议您输入时手脚慢一点,看看Emacs是如何来执行您的搜索请求的。

比如,要搜索“search”一词,您输入s,这时Emacs会把光标移动到最近一个s字母上,这里如果您暂停输入一会儿,Emacs就会把所 有的s字母进行高亮。您继续输入e,这时Emacs就找到了最近的se字母组合。一直输入下去,直到Emacs找到您要找的内容,这时按回车键即可结束查 找。

在查找过程中,您可以反复按动C-s或C-r来执行向后或向前的查找。如果您已经找到一了一个匹配的内容,并且按了回车键结束了查找,这时如要继续查找这个内容,您只需按两次C-s或C-r即可,第一次按动用于激活查找功能,而第二次按动则表示要继续查找。

在输入查找关键字时,如果不小心输错了,可以按动<DEL>键来清除前一个字符,请注意,在Emacs术语 中,<DEL>键是指我们通常所说的Backspace键,而<DELETE>键才表示我们键盘上的Delete或Del键。

输入关键词时也有一个细节的问题,如果您输入的关键字全部是英文小字母,则Emacs会进行不区分大小写的查找。但如果输入的关键字中包含有大 写字母, Emacs就会进行区分大小写的查找。另外在查找的过程中,可以通过M-c快捷键来切换区分大小字模式,可以用它来强行指定是否区分大小写。

如果不想用Emacs的增量搜索功能,也可以让Emacs进行传统的搜索,在按下C-s或C-r后,直接打一个回车键,这时Emacs就将进行非增量搜索,您可以输入你的关键字,再按回车键来执行搜索。

下面要介绍的是更为强大的正则表达式搜索功能。您可以通过按动C-M-s或C-M-r来启动正向或反向的正则表达式搜索功能,Emacs会在Minibuffer中提示Regexp I-search:,这时您便可以输入正要匹配的正则表达式了。

在正则表达式中可以使用很多的控制符号,这里我挑选几个常用的作一个简单的介绍,更全面复杂的解释可以在Emacs的手册中查到。

‘.’ (句号): 正则表达式的中句号可以用于匹配一个任意的字符。比如正则式’a.b’就可以匹配abb,acb,adb……等等以a开头以b结尾的三个字符的字符串。

‘*’: 正则表达式中的*号可以用于表示把它前面的字符重复0次或多次。比如’ff*’可以匹配一个或多个相连的f的字符串。

‘+’: 正则表达式中的+号与*号的作用基本相同,区别在于它表示把它前面的字符重复1次或多次,所以可知正则式’ff*’等价与’f+’。

Emacs的正则表达式语法十分复杂与强大,请您阅读Emacs手册来对它们进行全面的学习,一定会给您的工作带来巨大的便捷,作为一篇入门教程,这里我就不再作更全面的叙述了。

ICP备案完成

今天收到了ICP备案审核通过的邮件,备案完成,前后经历16天,还算比较有效率,只是备案网站不完全支持 Firefox和姗姗迟来手机注册码让整个备案过程颇感不顺利。现在我这个Blog网站的备案号是“苏ICP备07009277号”。不过MS我现在还没 有办法把这个信息单独放在首页上,我对Emacs Muse的配置还是没有完全搞清楚。先手工加一下,希望后天有时间可以解决一下这问题。

今天参加了UML的培训,不过感觉还是有点虚,主要是相关的设计知识和经验的缺乏,继续加油学习!

Emacs入门教程今天暂停更新一次,明天继续。

Emacs入门教程(2)

前面已经介绍了如何打开、保存文件,这一次我们将先介绍如何在文档中移动光标(光标在Emacs术语中表示为Point)。

你固然可以在Emacs中用习惯的光标移动键来移动光标,但这不符合Emacs“手不离主键盘”的设计理念,所以它设计了另类的光标移动方法。

最简单的移动当然就是上下左右了,对应的键是C-p, C-n, C-b, C-f,为了方便记忆,请记住pnbf是previous line、next line、backward和forward的缩写,请试着多按几次,练习一下,确保熟练。

其次就是翻页了,通常您可以用<PageDown>和<PageUp>,但Emacs的快捷键是C-v和M-v,注意 这里又有一个新的表示法了,M-v,它表示按着<META>键不放,再按v键。什么是<META>键?呵呵,对大多数PC机键盘 而言 <META>键就是<ALT>键。您可以打开一篇长一点的文章试试,可以按C-h t打开Emacs的Tutorial来练习,不用担心不小心把它改乱了,您打开的Turtoial只是一个副本,即使改坏了存了盘,下次打开也是一个全新 的没改坏的版本。

C-a和C-e可以分别把光标移动行首和行末,相当于<Home>和<End>。

如果把上面的部分命令的的Ctrl键换成Alt键,它们的功能就会发生变化:M-b,M-f,M-a,M-e分别表示前移一个单词,后移一个单 词,移动到当前句子首字符和移动到当前句子最后一个字符。可以这样记忆,Ctrl键用于“物理”移动光标,以行列为单位,Alt移用于“逻辑”移动光标, 以词、句子等丰富意义的单位来移动。

如果要一次移动若干个单位,可以给命令加上数值参数,通过C-u命令,如:C-u 8 C-n就表示往下移8行,C-u 10 M-e表示往后移10句。不过C-u的参数对C-v和M-v命令而言有特殊,它不表示上下翻多少页,而是表示上下滚动多少行。注意与C-n的区别,C-u 8 C-n表示光标下移8行,屏幕不一定会滚动,而C-u 8 C-v,表示屏幕滚动8行,如果光标没有滚到屏幕外的话,光标位置不变。

如果不给C-u带上数值,则默认的值是4。比如C-u C-n就表示下移4行。这一特性还可以重复使用C-u C-u C-p就表示上移16行,C-u C-u C-u C-f表示右移64个字符。

前面讲了用C-g可以中断当前的命令,这次再补充一点,有时候C-g不灵时,可以按三次<Esc>键达到相同的目的。

再介绍两个常用的但不太好操作的命令,M-<和M->,由于通常<和>符号分别在,和.的上面,所以实际操作时要按Alt+Shift+,和Alt+Shift+.,这两个命令分别用于移动光标到文件开始和结束的位置。

学习了不少东西,轻松一下,可以玩一下Emacs中自带的一些游戏,它们都可以在Tools菜单的Games中找到,如果你知道游戏的名称的话 可以直接用命令来调用,先按下M-x,然后就可以输入任何合法的命令,如要玩贪吃蛇就可以输入snake命令。其实,Emacs的所有操作都有对应的命令 名称,包括上面和即将介绍的各种快捷键,比如C-x C-s保存文件,对应的命令就是save-buffer,您完全可以键入M-x,然后输入save-buffer来执行与按C-x C-s完全相同的功能,这在忘记了快捷键的情况下十分有用。同样的,如果您记得快捷键却不知道对应的命令名,可以通过按动C-h C-k再按动相应的快捷键来查阅相关的帮助。记住,Emacs的帮助是十分详尽的,学会去阅读Emacs的手册是非常有助于学习Emacs的。

下面我们要初步介绍一下如果完成类似于Windows中的撤消、剪切、复制、粘贴操作。

撤消是最简单的,快捷键是C-_,同样,由于_符号在上档位,所以要按Shift键操作,如果你觉得这样不方便,可以用C-x u,功能是一样的。同样你可以在C-_前用C-u加上一个数字参数以便一次撤消多步操作。

要在Emacs中选择一块区域,可以把光标移到区域的开始或结束位置,按下C-<SPC>或C-@(前者在中文环境中可能会被切换 输入法占用,所以只能用后者,同理不要忘记按Shift键,以后不再提醒),这时Emacs会提示Mark set,然后把光标移到结束位置即可。正常情况下屏幕上不会有任何反映标识说设置了一个区域。但确实这块区域已经选中了。

这时,按动C-w就可以把选中的区域kill掉,相当于我们在Windows中的剪切操作,在Emacs中Delete和Kill这两个词是有 不同含义的,前者往往是指删除了,只能通过撤消操作来恢复,而后者则相当于是剪切了,可以通过一定的方法来恢复(Yank)。另外,Emacs中的剪切与 传统的Windows不同,比较像新版的Office剪贴板,可以存放多次复制或剪切的东西。

要恢复最后一次Kill的内容,可以按C-y,多次按动它可以多次Yank最后一次Kill的内容,相当于在Windows中多次粘贴了一样。如果要Yank前几次Kill的内容,可以反复按M-y键。

要实现与Windows中复制相同的功能,可以在选定区域后按M-w键,它会把选定的内容放入Kill-Ring以便以后Yank但不会把选定的内容真正Kill掉。

有了以上的内容,您基本上已经可以把Emacs当作跟Windows Notepad差不多的工具来用了,更高级的功能,我们会在后面继续讲述。

Emacs入门教程(1)

我写连载文章一向是虎头蛇尾,通常连载不超过三期就没有了下文,曾经写过的Emacs入门教程也 是这样的情况。时隔两年,Emacs对于我来说已经从一个玩具软件变成了日常工作中不可缺少的一个工具,虽然对它的应用也还没到真正熟悉的程度,但至少对 它也有了更多的认识,所以准备对这个系列程进行一下更新,并丰富一下内容。前三篇会在以前写过的版本上进行修改,主要是把原先针对Windows平台的内容进行淡化,使得这个文章在各种平台上都可以适用。希望这个系列的文章能对刚刚开始使用Emacs的朋友有所帮助。记得有朋友做过这样的评论(2004-08-29 22:15:00),其实这真是件很轻松的事情,希望这个教程就可以帮助大家一起实现这个目标^_^

废话少说,下面开始正文……

也许很多人都听说过Emacs这个功能强大的编辑器了,但很多人可能不曾想到的是这个“最强大”的编辑器给人的第一印象几乎一定是“不知所措”,本文的目的,就是希望能给那些“不知所措”的朋友提供一个入门的机会,让Emacs能在日常的工作中助你一臂之力。

要使用软件,首先当然是要获得Emacs软件的程序包并安装它,很多Linux发行版都已经自带了Emacs,如果没有,您可以在http://www.gnu.org/software/emacs/emacs.html上的第5节Obtaining GNU Emacs中您可以找到它的下载地址。目前最新的稳定版本是21.4a,Windows平台上的是21.3版。值得一提的是,如果您需要在Emacs中处 理中文,也许21.4a的版本并不是最佳的选择,因为它对Unicode的支持还是非常的有限,我建议您直接从Emacs的CVS中Checkout出 Emacs 23的代码,然后自己编译使用。如果你不知道什么是CVS也没有关系,执行下面的命令就行了:

$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co -r emacs-unicode-2 emacs

然后可以进入emacs目录,执行:

$ ./configure
$ make bootstrap && make install

就行了。

运行Emacs与运行其它软件一样,只要输入emacs就可以了。如果当前是在图形界面下,Emacs会显示它图形界面,否则就显示纯字符的界 面。如果要在图形界面的终端窗口中让Emacs以字符界面运行,可以输入emacs -nw来启动它,-nw表示No Window。

对于Windows版本的Emacs,不用安装,直接解压后就可以使用了,比如可以把它放在C:\Program Files\emacs-21.3目录中,以后可能会提到“Emacs的安装目录”就是指它。在Emacs的安装目录下的bin目录中有Emacs的可执 行文件emacs.exe,双击即可运行它出现图形界面,如果希望在控制台环境下以控制台风格来运行它,同样可以加上-nw参数。另外,运行bin目录中 的addpm.exe,可以自动为Emacs在开始菜单中建立一个菜单项。我还建议大家在系统的Send To文件夹中为Emacs.exe建立一个快捷方式,这样什么想用Emacs打开的文件都只要用右键点它选“发送到”Emacs就可以了。

相信到现在为止,大家已经看到Emacs不那么友好的界面了,刚启动Emacs时它会出现一个介绍的封面,点鼠标或按任意键就会切换到一个名为 *scratch*的Buffer,上面有三行注释,说你可以在这里随便写点不需存盘的文字,或者可以打一些要执行的Lisp语句,如果要创建文件,请按 C-x C-f。

在真正开始使用Emacs之前,请大家注意下面一点:

由于历史的原因,Emacs中很多术语、表示方法和操作习惯与现在惯用的不一致,在学习时要时刻记住这一点,避免混淆。在本文中,将遵循Emacs术语,并用英文表示。

开始编辑一个新文件的方法是按C-x C-f,这个表示法的意思是:先按一下Ctrl+x,然后再按一下Ctrl+f(当然你也可以按着Ctrl不放,分别敲x和f键)。这时,在Emacs的 Frame(在Emacs术语中,Frame是指我们平时习惯上说的“窗口”,而Window这个术语是指在一个Frame中的分隔出的几个区域)底部的 Minibuffer中会出现提示:Find file: ~/ (Windows中可能会是Find file: C:\Program Files\emacs-21.3\bin/),在这里就可以输入要新建的文件的文件名了,默认的路径就是它所显示的这个。输入一个文件名,它就会在 Emacs中新开一个空白Buffer用于编辑。如果输入一个已存在的文件名,就会在一个新的Buffer中打开这个文件用于编辑。也就是说C-x C-f是一个可以用于新建或打开文件的命令,难怪它在Emacs手册中被解释为Visit a file而不是New file或Open file。

在很多情况下,您似乎并不会仅仅在在默认的目录下建立文件,所以您可能需要把已经出现的默认路径清除再写您的实际的路径。其实不需要这样麻 烦,Emacs在很多很细小的东西上都做的非常人性化,您只需在它的默认路径最后一个/后接着打一个/就可以直接输入实际的文件路径了,比如,我不管它的 默认路径,直接输入/tmp/1.txt就可以建立或打开/tmp目录中的1.txt文件了,在输入路径和文件名时,可以只输入一部分,然后 按<Tab>键,Emacs会设法帮您自动补充完整。

如果要用鼠标来操作Emacs新建或打开一个文件,可以点File菜单的Open File一项。用键盘也可以选菜单,但决不是Alt+F之类的,您可以按F10键,然后再选项相应的菜单项,F10的表现形式在图形界面下和在文本界面下是不一样的,但操作方法一致。

Emacs的很重要的一个设计理念就是要让您的双手在整个操作过程中不离开主键盘(就是指字母和数字键这个区域),以追求最高的工作效率。所以本文中后面对鼠标操作的介绍会比较少。

现在您已经正确的打开了一个新的Buffer来编辑文件了,您可以试着输入一些东西。输入中,如果超过了行末,Emacs会自动换行并显示一个续行符。

也许您在输入过程中尝试了“复制/剪切/粘贴”这样的操作,结果一定很令人失望,常用的Ctrl+C/Ctrl+V等快捷键都不对了,再次提醒您记住,学习Emacs就要忘记以前很多的东西。当你慢慢熟悉Emacs,你会喜欢这个强大的编辑器的。

如果您发现在敲快捷键的过程中发生了错误,在大多数的情况下,您可以按C-g快捷键来中断当前的错误命令从头开始。比如您不小心按了C-s,这 是Windows中保存文件常用的快捷键,Emacs却在Mini-Buffer中提示您I-search:,这时就可以按C-g退出,返回正常状态,同 时 Minibuffer中会显示Quit表示退出了当前命令。

要保存文件,正确的命令是C-x C-s。要退出Emacs,正确的命令是C-x C-c,如果有Buffer中的内容修改了未保存,它会作相应的提示,如果您选择不存,它还要进一步确认是否真的要退出Emacs。

至此,您已经可以用Emacs打开或新建一个文件,编辑并保存,然后退出Emacs了。

也许您觉得我写得挺罗嗦的,进度也很慢,您可以不看我的文章,直接去阅读Emacs的教程,它用很精辟的方式描述了Emacs最基本的使用方 法。进入Emacs后,按C-h t(先按Ctrl+h,再按t键,注意不是C-h C-t)就可以阅读它了。目前发布的Emacs中还没有包含中文的教程,您可以在Emacs的CVS的etc目录中找到中文的教程,文件名为 TUTORIAL.cn(简体)和TUTORIAL.zh(繁体)。Emacs 23中包含了中文的教程,可以通过Help菜单中的Emacs tutorial (choose language)…打开。

Blog更新

今天对Blog进行了更新,主要涉及的是CSS的调整和留言的处理,所以大家现在看到的是一个崭新的页面了。

这是我第一次用DIV+CSS制作范合W3C标准的网页,不学不知道,一学才知道我以前一直所津津乐道的基于表格的网页布局方法早就已经被淘汰 了。基于DIV+CSS布局的网页,不但是布局方式的调整,更重要的是把原先以布局为导向的网页设计变成了以内容为导向的网页设计。以内容为导向的一个重 要好处是,即使你用的浏览器不能支持复杂的布局,比如我在Emacs中用的W3M,依然可以很好的把关键的内容表达出来。

除了布局的调整,还有一个重要的变化是在留言的处理上,尝试性的采用了一点点AJAX技术,现在每篇文章都可以分别评论了,而且查看文章评论也 变得简单了。不过这是我第一次尝试用AJAX,所以在很多方面处理都存在问题,慢慢完善啦。目前我已在IE6/7和FireFox 1.5/2.0上测试过基本上可以正常工作,而在不支持JavaScript的浏览器(比如W3M)上完全不工作,这一点以后会设法完善。另外,目前发表 留言后一率会返回首页,这个也以后再改进。

还有其它很多很多不完善的地方,一率慢慢改~