有关Emacs的一些思考
发表于 : 2009-12-08 11:07
#+TITLE: 有关Emacs的一些思考
作者:三点
在下文中,C-x意为Ctrl-x,M-x意为Alt-x,以此类推。
RMS为Gnu教父Richard Stallman。Emacs指Gnu Emacs。Vi泛指Vim/vi。
* STARTED 我的Emacs私房菜(向鸟哥的Linux私房菜致敬)
** 几个疑问?
*** Emacs用户为什么没有Vi多?
这个问题来源于现实,大多数*nix平台上的用户都会选择用Vi。拿我自己来说
吧,我在用Emacs之前有3年的Vi经验,这期间也尝试用过Emacs,但都没有坚持
下来。
在这里,有必要回忆一下多年前不怎么美好的Emacs初体验。首先是保存文件,C-x
C-s,比Vi的:w繁琐。接着是没有看到tab,这个在Vim里都有了。这两个简单的判
断直接判了Emacs死刑。
直到2年前,偶然看到一位同事在用Emacs的dired。幸运的是,那位同事是传教
士型的用户,他极力向我推荐用Emacs。用他的话讲,“Vi是单项冠军,Emacs是
十项全能”。从这个意义上讲,比较Vi和Emacs就像比较刘翔和中国乒乓球队一
样,既不公正,也没有意义。或者说,Vi更符合Gnu的Kiss原则。
从那时起,我开始花时间熟悉Emacs。一开始是在家里的Windows XP上。我发现我
在Emacs上花的时间远比Vi上的时间多(我在Vi上只学了十几个指令就开始干活
了,并且没有大改过配置文件),但在Emacs上,我甚至为自己写了上千行的文档
还不过瘾。
Emacs的老用户对它有个爱称“怪兽”,而其他Editor的用户也借此嘲笑他身躯庞
大,功能繁多,外加启动贼慢。过去,Vi用户嘲笑Emacs用户,“你还在等Emacs
load,我已经把程序都调完了”,现在轮到Emacs用户嘲笑Eclipse用户了,呵呵。
在我的机器上,Emacs启动要load十几个mode,还有四五十个文件/文件夹,大概
只要不到5秒时间。Emacs占用的内存一般只有20MB左右。所以,时间和速度都不
是问题了。
我想,其他Editor的用户也不是不想让自己的Editor成为“怪兽”,只是没有能力
罢了。在设计Emacs初期,RMS在速度和扩展上选择了后者。在扩展语言(Elisp)方
面,Emacs远远超出同时代的Editor,所以才有了org-mode,gnus,dired,vc等
等。其他Editor的用户(比如我)也是基于这个原因转投Emacs。
对于Emacs用户来说,Windows/Linux/Mac都不是问题,因为Emacs本身就是个
OS,当我把家里的机器重装成Ubuntu,也没有什么磨合过程,因为除了用
Firefox/pdf reader,大量的时间都是和Emacs一起度过的。
回到原来的问题“Emacs用户为什么没有Vi多”。我想既有历史的原因,也有实际
的考虑。
先讲讲历史。十年前,正是Emacs的内战胶着期,以Zawinski为首的Hacker不再认
同RMS的开源策略,认为RMS老古董,落伍了。所以他们从Emacs 19开始分化成另
一个版本,XEmacs。不可否认,XEmacs对Emacs的进化有积极意义,带来更多的
新feature,但XEmacs的不稳定是出了名的,一天crash个几次都有可能。所以
Emacs的用户有两个选择,新潮但不稳定的XEmacs,陈旧但稳定的Emacs。而此
时vi也在进步,且始终稳定,这就使得新手在选择Emacs和Vi上逐渐倾斜Vi。
转瞬十年,尘埃落定。XEmacs几乎放弃更新,而Emacs继续向着23挺进。S. Yegge
也为它写了悼词,“XEmacs is dead, long live XEmacs”,呼吁Emacs用户重新
团结在GNU周围。经过这次折腾,Emacs元气大伤。
再看看现实。首先,我们都知道,大多数人干的活上是维护,也就是读代码或者
修改代码,而不是开发新程序。所以,如果我只要改一个文件,当然不需要开
Emacs,在terminal打开vi,瞬间修改保存,多好:)。这就是我用vi的情景。
其次,Emacs的key-binding一直是用户诟病的话题,比如我上面举的C-x C-s。无
节制的采用Ctrl最终让RMS患上肌肉功能疾病。现在Emacs上的key-binding其实是
RMS在MIT时的产物,到现在已经有三四十年了,他和他的同事们把自己随意定
义的key-binding放在一起(RMS定义key-binding的能力如果和他写程序的能力一样
强,那有多好),和谐了一把,就是我们现在看到的样子了。RMS老了,他已经不
想再在这上面作改动,他的手也不允许他编程了。但我们还年轻,既要用
Emacs,又要保护自己吃饭的本钱-双手。这就是为什么我以后要提到的“Lee
Xah's ErgoEmacs”和S. Yegge的“换ctrl和caps lock”。
最后,Emacs的培训比Vi要更难些,更花时间。作为vi用户,我知道,大多数人在
“裸vi”(没有特别配置过的vi)上工作的很好。但是Emacs用户却对配置乐此不疲
(不知道有多少人用裸Emacs)。我认识的一个小伙子光配置文件就分十几个文件,
上万行代码。这一点,vi用户很难理解。“不就是个editor吗”,有必要花这么多
时间在上面吗?用过Emacs,我才知道,其实Emacs用户喜欢的是Elisp环境,而不
是vi意义上的editor。
如果让我用一句话来表达对Emacs的感情(我在用Vi的时候好像没有这种感情,呵
呵),那就是"Use it, love it"。还有,希望在我的有生之年不要生RMS一样的
病。
*** TODO tab/dialog/toolbar的迷思-Emacs很土?
** WAITING 学习道路
学Emacs要比Vi难一些,甚至可以说,和学一个新的OS一样难。我大致估计了一
下,从入门到在潜意识层面运用Emacs(也就是不加思索地用它),大概花了我3
个月时间,和我学习Linux系统/指令的时间大致相当。
这期间,我几乎把能找到的有关Emacs的书都读了...呵呵,实际上只有3本。其
中第一本是大家都知道的动物书,另两本都是讲elisp的,"Elisp intro"和
"Elisp extension"。
但是,真正影响我的却是Steve Yegge blog,特别是他的"Effective
Emacs",Lee Xah的ErgoEmacs mode和org-mode网站上的tutorial。当然,还有
RMS写的info Emacs(这个文档不是给初学者看的)。
我的经验是要看到Emacs的优点和弱点,充分享受优点,学习如何克服弱点(书上
主要是对Emacs歌功颂德)。
** STARTED Emacs的key-binding与保护自己的手
Yegge和Xah可以说是我的Emacs导师(只是看过他俩的文章)。他俩的文章有共
同的特点,又臭又长且个人风格极强,呵呵,在这点上我也有向他俩靠拢的趋势。
Yegge和Xah用Emacs都超过10年,对它的优劣了如指掌。他们提到Emacs的一个巨
大缺点就是“伤手”(过度用Ctrl小指)。如果有人上过钢琴课就知道,老师一上来
先教小琴童“放松”,比如“甩手大法”。对于钢琴家,如果手弹废了,和变成白痴
没有区别。但是计算机课从来都没有提到这些,专家们对我们的职业病视而不见。
*** S. Yegge's blog:换ctrl和caps lock
如果你在用C-c, C-f, C-x的时候感觉手腕别扭,那就考虑一下Yegge的建议吧。
Yegge的建议(他把这个建议放在Effective Emacs最前面,可见其重要性)是换
左ctrl和caps lock(一些Unix机器上本身就这样安排)。原因是这样ctrl在中间
行,和其他键组合起来不会太吃力。我从一开始就采用他建议,大概用了2周时间
适应,现在用C-f,感觉舒服多了^-^,不用再把手腕扭来扭去。
*** STARTED Xah的ErgoEmacs
Xah则提出了更进一步的方案。一句话,尽量用Alt(大拇指)代替Ctrl(小拇指)。
** STARTED org-mode/artist-mode/spell-check
某vi支持者说:我恨Emacs,我用它只为org-mode。org-mode是北欧的一个计算机
教授在业余时间写的(看看人家的教授),开始时是为了弥补outline-mode的不
足。Emacs上的大多数应用是为程序员准备的,而不搞it的人也能用org-mode。
*** TODO org-table
** TODO dired/ibuffer/ido
如何切换文件
** TODO re/re-isearch/re-replace/rebuilder
re(regular expression)
** TODO compile/grep/gcc/gdb/make
compile在做什么?
** TODO vc/git
version control
** TODO others: calculator, shell/term, proced, rectangular
** Emacs的未来(23.1发布以后对Emacs新当家人的采访)
http://www.douban.com/group/topic/8356844/
(哎,那时候在国内还能看blogspot的copy,现在...)
其中的大当家Chong Yidong也许是中国人,物理博士后。二当家是一位计算机教
授。
要点:
1. 这两位当家人都是保守派人士,现有的key-binding和default customize基本不会修改。
2. CEDET有望在23.2时归入Emacs发布包。
3.新当家人希望release cycle缩短。Emacs有120名代码贡献者。
(草草完成,尚不完整。待续,先列提纲,等有时间补上)
作者:三点
在下文中,C-x意为Ctrl-x,M-x意为Alt-x,以此类推。
RMS为Gnu教父Richard Stallman。Emacs指Gnu Emacs。Vi泛指Vim/vi。
* STARTED 我的Emacs私房菜(向鸟哥的Linux私房菜致敬)
** 几个疑问?
*** Emacs用户为什么没有Vi多?
这个问题来源于现实,大多数*nix平台上的用户都会选择用Vi。拿我自己来说
吧,我在用Emacs之前有3年的Vi经验,这期间也尝试用过Emacs,但都没有坚持
下来。
在这里,有必要回忆一下多年前不怎么美好的Emacs初体验。首先是保存文件,C-x
C-s,比Vi的:w繁琐。接着是没有看到tab,这个在Vim里都有了。这两个简单的判
断直接判了Emacs死刑。
直到2年前,偶然看到一位同事在用Emacs的dired。幸运的是,那位同事是传教
士型的用户,他极力向我推荐用Emacs。用他的话讲,“Vi是单项冠军,Emacs是
十项全能”。从这个意义上讲,比较Vi和Emacs就像比较刘翔和中国乒乓球队一
样,既不公正,也没有意义。或者说,Vi更符合Gnu的Kiss原则。
从那时起,我开始花时间熟悉Emacs。一开始是在家里的Windows XP上。我发现我
在Emacs上花的时间远比Vi上的时间多(我在Vi上只学了十几个指令就开始干活
了,并且没有大改过配置文件),但在Emacs上,我甚至为自己写了上千行的文档
还不过瘾。
Emacs的老用户对它有个爱称“怪兽”,而其他Editor的用户也借此嘲笑他身躯庞
大,功能繁多,外加启动贼慢。过去,Vi用户嘲笑Emacs用户,“你还在等Emacs
load,我已经把程序都调完了”,现在轮到Emacs用户嘲笑Eclipse用户了,呵呵。
在我的机器上,Emacs启动要load十几个mode,还有四五十个文件/文件夹,大概
只要不到5秒时间。Emacs占用的内存一般只有20MB左右。所以,时间和速度都不
是问题了。
我想,其他Editor的用户也不是不想让自己的Editor成为“怪兽”,只是没有能力
罢了。在设计Emacs初期,RMS在速度和扩展上选择了后者。在扩展语言(Elisp)方
面,Emacs远远超出同时代的Editor,所以才有了org-mode,gnus,dired,vc等
等。其他Editor的用户(比如我)也是基于这个原因转投Emacs。
对于Emacs用户来说,Windows/Linux/Mac都不是问题,因为Emacs本身就是个
OS,当我把家里的机器重装成Ubuntu,也没有什么磨合过程,因为除了用
Firefox/pdf reader,大量的时间都是和Emacs一起度过的。
回到原来的问题“Emacs用户为什么没有Vi多”。我想既有历史的原因,也有实际
的考虑。
先讲讲历史。十年前,正是Emacs的内战胶着期,以Zawinski为首的Hacker不再认
同RMS的开源策略,认为RMS老古董,落伍了。所以他们从Emacs 19开始分化成另
一个版本,XEmacs。不可否认,XEmacs对Emacs的进化有积极意义,带来更多的
新feature,但XEmacs的不稳定是出了名的,一天crash个几次都有可能。所以
Emacs的用户有两个选择,新潮但不稳定的XEmacs,陈旧但稳定的Emacs。而此
时vi也在进步,且始终稳定,这就使得新手在选择Emacs和Vi上逐渐倾斜Vi。
转瞬十年,尘埃落定。XEmacs几乎放弃更新,而Emacs继续向着23挺进。S. Yegge
也为它写了悼词,“XEmacs is dead, long live XEmacs”,呼吁Emacs用户重新
团结在GNU周围。经过这次折腾,Emacs元气大伤。
再看看现实。首先,我们都知道,大多数人干的活上是维护,也就是读代码或者
修改代码,而不是开发新程序。所以,如果我只要改一个文件,当然不需要开
Emacs,在terminal打开vi,瞬间修改保存,多好:)。这就是我用vi的情景。
其次,Emacs的key-binding一直是用户诟病的话题,比如我上面举的C-x C-s。无
节制的采用Ctrl最终让RMS患上肌肉功能疾病。现在Emacs上的key-binding其实是
RMS在MIT时的产物,到现在已经有三四十年了,他和他的同事们把自己随意定
义的key-binding放在一起(RMS定义key-binding的能力如果和他写程序的能力一样
强,那有多好),和谐了一把,就是我们现在看到的样子了。RMS老了,他已经不
想再在这上面作改动,他的手也不允许他编程了。但我们还年轻,既要用
Emacs,又要保护自己吃饭的本钱-双手。这就是为什么我以后要提到的“Lee
Xah's ErgoEmacs”和S. Yegge的“换ctrl和caps lock”。
最后,Emacs的培训比Vi要更难些,更花时间。作为vi用户,我知道,大多数人在
“裸vi”(没有特别配置过的vi)上工作的很好。但是Emacs用户却对配置乐此不疲
(不知道有多少人用裸Emacs)。我认识的一个小伙子光配置文件就分十几个文件,
上万行代码。这一点,vi用户很难理解。“不就是个editor吗”,有必要花这么多
时间在上面吗?用过Emacs,我才知道,其实Emacs用户喜欢的是Elisp环境,而不
是vi意义上的editor。
如果让我用一句话来表达对Emacs的感情(我在用Vi的时候好像没有这种感情,呵
呵),那就是"Use it, love it"。还有,希望在我的有生之年不要生RMS一样的
病。
*** TODO tab/dialog/toolbar的迷思-Emacs很土?
** WAITING 学习道路
学Emacs要比Vi难一些,甚至可以说,和学一个新的OS一样难。我大致估计了一
下,从入门到在潜意识层面运用Emacs(也就是不加思索地用它),大概花了我3
个月时间,和我学习Linux系统/指令的时间大致相当。
这期间,我几乎把能找到的有关Emacs的书都读了...呵呵,实际上只有3本。其
中第一本是大家都知道的动物书,另两本都是讲elisp的,"Elisp intro"和
"Elisp extension"。
但是,真正影响我的却是Steve Yegge blog,特别是他的"Effective
Emacs",Lee Xah的ErgoEmacs mode和org-mode网站上的tutorial。当然,还有
RMS写的info Emacs(这个文档不是给初学者看的)。
我的经验是要看到Emacs的优点和弱点,充分享受优点,学习如何克服弱点(书上
主要是对Emacs歌功颂德)。
** STARTED Emacs的key-binding与保护自己的手
Yegge和Xah可以说是我的Emacs导师(只是看过他俩的文章)。他俩的文章有共
同的特点,又臭又长且个人风格极强,呵呵,在这点上我也有向他俩靠拢的趋势。
Yegge和Xah用Emacs都超过10年,对它的优劣了如指掌。他们提到Emacs的一个巨
大缺点就是“伤手”(过度用Ctrl小指)。如果有人上过钢琴课就知道,老师一上来
先教小琴童“放松”,比如“甩手大法”。对于钢琴家,如果手弹废了,和变成白痴
没有区别。但是计算机课从来都没有提到这些,专家们对我们的职业病视而不见。
*** S. Yegge's blog:换ctrl和caps lock
如果你在用C-c, C-f, C-x的时候感觉手腕别扭,那就考虑一下Yegge的建议吧。
Yegge的建议(他把这个建议放在Effective Emacs最前面,可见其重要性)是换
左ctrl和caps lock(一些Unix机器上本身就这样安排)。原因是这样ctrl在中间
行,和其他键组合起来不会太吃力。我从一开始就采用他建议,大概用了2周时间
适应,现在用C-f,感觉舒服多了^-^,不用再把手腕扭来扭去。
*** STARTED Xah的ErgoEmacs
Xah则提出了更进一步的方案。一句话,尽量用Alt(大拇指)代替Ctrl(小拇指)。
** STARTED org-mode/artist-mode/spell-check
某vi支持者说:我恨Emacs,我用它只为org-mode。org-mode是北欧的一个计算机
教授在业余时间写的(看看人家的教授),开始时是为了弥补outline-mode的不
足。Emacs上的大多数应用是为程序员准备的,而不搞it的人也能用org-mode。
*** TODO org-table
** TODO dired/ibuffer/ido
如何切换文件
** TODO re/re-isearch/re-replace/rebuilder
re(regular expression)
** TODO compile/grep/gcc/gdb/make
compile在做什么?
** TODO vc/git
version control
** TODO others: calculator, shell/term, proced, rectangular
** Emacs的未来(23.1发布以后对Emacs新当家人的采访)
http://www.douban.com/group/topic/8356844/
(哎,那时候在国内还能看blogspot的copy,现在...)
其中的大当家Chong Yidong也许是中国人,物理博士后。二当家是一位计算机教
授。
要点:
1. 这两位当家人都是保守派人士,现有的key-binding和default customize基本不会修改。
2. CEDET有望在23.2时归入Emacs发布包。
3.新当家人希望release cycle缩短。Emacs有120名代码贡献者。
(草草完成,尚不完整。待续,先列提纲,等有时间补上)