琐事小记

最近一点小碎事,记于此:

1. 明天出发去北京,参加6号的CSDN的七周年技术英雄会,车票、邀请函等事颇有不顺,不过希望这次行程最终可以比较顺利。

2. 明天参与网站裸奔CSS Naked Day ’07活动,即时起去除本网站的CSS,看看纯正的XHTML做出来的网站是什么味道。这个活动的意义在于展现W3C标准网页制作的重要性。一个标准的网站,在除去CSS后应该仍然可以比较正常的表现它的内容。虽然活动只要求持续一天,不过因为周末我没时间更新,就持续到周一吧。今天又小改了一下Blog的布局,不过没有CSS也不明显啦。另外,下一步一定要把RSS加上,没有RSS的Blog还叫Blog吗?

3. 寄人篱下感觉总不是太好,fx.jiuzhe.com这个二级域名用了三个月,感觉还是自己搞个域名玩玩比较有意思,于是就买了一个新的域名,www.freemindworld.com。在选名字这类需要创意的问题上,我总是不很在行,尤其在好名字都被挑光的情况下就更是如此。Free是我一定要选的一个词,因为现在Freedom是我的一个理念。Mind是希望我可以更多的放飞我的思维,不要局限在小空间中。加上World是无奈之举,实在是两个词域名很难找到好的了。本来想用Zone,但后来决定用World,MS可以大气一点,呵呵。记得N年前根据电脑报上文章的引导还曾经用自己的名字的拼音申请过域名,文章说了是免费申请,但没提到是要收年费的,所以在被催收了两次年费未交的情况下,那个域名早已经被注销了。用自己的名字申请域名现在来看不是很Make sense,所以自己先否决了这个选择。

4. 今天被美国的夏时制折腾了一把,在夏时制的情况下,产品的一些功能会受到影响,夏时制这些以前看来与自己毫无关系的东西,在做产品时却遇到了,学无止境!

Emacs入门教程(4)

Eamcs只能完成跟Notepad一样的功能吗?答案显然是否定的,今天我们一起来看看Emacs中的Buffer和Window是怎么用的。

首先还是现来了解一下什么是Emacs中的缓冲区(Buffer)和窗口(Window)。

Buffer:在Emacs中编辑的每个一文档,或每一个信息存放的空间都构成一个Buffer。

Window:在一个Emacs运行时的界面(一个Frame)中,可以划分成多个隔开的区域,每一个区域称为一个Window。如果在图形界 面下运行多个Emacs的实例,则每一个实例对应一个Frame。在不同的Window中,可以显示相同或者不同的Buffer的内容。

在刚启动Emacs时,Emacs己经为您建立了一个名为*scratch*的Buffer,用于进行随意的文本输入(它其实还有ELisp演 算的功能的,这个后面再说)。后面每当您用C-x C-f新建或打开一个文件时,Emacs都会新建一个Buffer,名字就是你文件的名字,并且在当前的Window中进行显示。如果是新建文 件,Buffer就是空的,如果是打开文件,就会把文件的内容读入,放在Buffer中。所以如果你在编辑一个文件,在你存盘之前,其实你是在修改 Buffer中数据,而并没有在修改实际的文件。

现在您可以试一下,先打开或创建几个文件,这时当前应该显示在最后一个文件对应的Buffer中。按动键盘上的C-x C-b,这时您会发现Emacs的屏幕被分成了上下两部分,这两个部分也就是Emacs中的所谓的Window了。

观察一下下面的那个窗口,可以看到,它的名字是*Buffer List*,窗口的内容就是列出了当前所有的Buffer。我们先不介绍这个Buffer List的使用的方法,我们先介绍窗口的基本操作:

C-x o:把光标在屏幕上的窗口间进行切换。记忆方法:其它(Other)窗口。

C-x 1:把当前光标所在的窗口放到最大,隐藏其它所有的窗口。记忆方法:只剩一(1)个。

现在您可以按几次C-x o看看光标是不是可以在上下两个窗口间跳动,玩够了就再让光标停到先前的窗口中,按C-x 1,这时Buffer List窗口应该被隐藏了起来,这时如果你再试图用C-x o来切换窗口就不管用了,因为屏幕上只有这一个窗口了。

那怎么切换显示隐藏的窗口呢?其实这个说法本身就不是很准确,在Emacs中只有显示出来了,才叫窗口,如果没有显示出来,而数据还存在,这时它只能称为是一个Buffer。

切换Buffer的快捷键是C-x b,可不要跟列出Buffer列表的快捷键搞混了。按下C-x b后,Emacs会在Mini-buffer中提示输入要切换到的Buffer的名字,对于文件来说,这个Buffer的名字通常就是文件名了,对于没有 关联到文件的Buffer,它们也有自己的名字,比如*scratch*,*Buffer List*之类这些都是。如果不输入Buffer名字直接回车,就会打开上一次访问的Buffer,所以反复按C-x b加上回车,就可以在最近工作过的两上Buffer间切换,非常方便。同理,在输入Buffer名字的时候,同样可以用Tab键进行自动补齐。

如果只会新打开文件创建新的Buffer,而不会把它们关闭,这显然是不行的,Buffer会越来越多。要关闭一个不需要的Buffer,所要 做的就是先切换到这个Buffer,然后按动C-x k,加上回车。或者直接按C-x k再输入Buffer名字后回车,效果都是一样的。在关闭Buffer的时候,如果Buffer中的内容没有保存,Emacs会提示你是否真的要关闭。

讲了不少,还没有讲到一开始按C-x C-b看到Buffer List的用法,其实如果不是要批量处理Buffer,比如一次关闭很多Buffer的话,我觉得Buffer List用处并不是很大,所以这部分功能就留待大家自己去琢磨了,其实在后面讲到对列表型的窗口的操作的时候,这个Buffer List的操作方法也就显而易见了。

有些朋友到现在为止可能已经开始被复杂的快捷键搞晕头了,不要怕,多用用也就熟悉了。另外,其实Emacs所有的快捷键都是可以自由定制的,随着你对Emacs的不断熟悉,你很快就可以找到一套最适合你自己使用的快捷键方案,到时我会介绍如何进行这样的定制。

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差不多的工具来用了,更高级的功能,我们会在后面继续讲述。