帝老师教你用Emacs【0】

帝老师教你用Emacs【零】
(by 帝归)

你好,我是Emacs脑残粉

经有人问我,在这个智能IDE可以帮你完成编程中大多数繁琐工作的时代,你为何还要坚持使用Emacs这种“老古董”级别的编辑器。很多时候,我只是对提问者答之以微笑。但是,更多的时间里,我也在问我自己,我为何会如此沉迷于Emacs,Emacs真的就比Eclispe高效?还是多多少少有点装逼的心理在里面?

一开始,我并不能回答这些问题,而对于Emacs的热爱却依旧没有减少分毫。时至今日,在使用了Emacs很长一段时间之后,我终于可以感觉到自己的进步,也对程序设计和软件开发有了一些颇为独到的见解,而这些经验很难甚至几乎不可能从其它地方获得。

感谢国家,感谢Emacs。

编辑器?不,Emacs真心是个操作系统

与其说这是对Emacs的过誉,不如说这是赤裸裸的现实。Emacs确实是一个操作系统,它传承自大型机时代的Lisp机。

在传说中的MIT人工智能实验室里,聪明绝顶的黑客们发明了这个怪物。是的,对当时的机器来说,Emacs确实是一个妄图吃尽所有机器资源的怪物。但是MIT的那帮黑客们并不在乎这一点,他们有着世界上最先进的计算机,丝毫不用担心资源不足的情况,他们一心只想造出一个功能完备、面面俱到的编辑器。而且他们做到了。后来的自由软件运动发起人,固执的Lisp黑客RMS更统一并增强了这个编辑器,他甚至为Emacs写了一个完备的语言用于扩展,而这个语言竟然是强大的Lisp。

你或许看过《Unix程序设计艺术》之类的书,其中对于Unix的设计哲学KISS大为吹捧。但是当你进入Emacs的世界后,你就会感受到一种完全不同的风格。Unix提倡简洁,Emacs提倡完备,Unix提倡定义接口,Emacs提倡完美抽象,Unix提倡一个程序只做一件事,Emacs,额,你知道,你不能要求一个操作系统只能做一件事情。

虽然Unix哲学已经经过了时间的检验,并且被证明是正确并可行的,但是你要知道,做事情的方式并非只有一种,既然面向对象这种在《Unix程序设计艺术》里被吐槽得体无完肤的抽象模式都可以在业界流行多年,那么Emacs这种All in One的设计风格又为何不能吸引一批又一批的优秀程序员呢?至少,我已经在Emacs里使用shell很久了。

是的,你可能已经发现了。我们并没有在说为一个软件开发插件,我们在说系统编程。Unix的系统调用是C,而Emacs的系统调用是Emacs Lisp。

哪些大牛在使用Emacs?

亲爱的读者,如果你是一个年轻的程序员(像我一样),那么Emacs的年龄可比你大得多。在历史上,有不计其数的优秀程序员们在使用Emacs,甚至是Emacs的死忠。他们不仅仅是能力超群的coder,他们更一手创建了计算机世界,使用Emacs。举个栗子?Linux之父,Linus Torvalds,曾经公开宣称“GNU Emacs is evil”,但是请注意,他使用的也是一款Emacs,叫做MicroEmacs。

使用Emacs的大牛们:

Richard Stallman,Emacs/Gcc作者,自由软件运动发起人。
松本行弘,Ruby编程语言作者。他有一个关于Emacs的演讲,《How Emacs Changed My Life》。
Joe Armstrong,Erlang之父。在他的Erlang著作《Programming Erlang》里,你到处都能看到Emacs的痕迹。
Don Box,COM之父。他用Emacs写C#程序。是的,微软的C#。
Steve Yegge,现在在Google工作。他是著名的Emacs鼓吹者。
坚持下去,你就是下一个。:)

我要不要学习Emacs?

你为什么要学习一门新技术?仅仅是想提高生产效率?如果你是个Java程序员,那么把Eclispe用好就可以了。如果你是个Python程序员或者系统管理员,那么用好Vi也会大大地帮助你提高效率。如果你是写C#,肯定是用VS了,当然除非你是Bon Box那样另类的大牛。如果你偶尔写写Lisp,那么估计你已经在使用Emacs了。

实际上,无论你使用什么编程语言,你都可以学学Emacs。但是,请注意,你可能会沉迷其中不可自拔。优秀的程序员写程序是为了什么?与其说是为了养家糊口,不如说是更多地是为了乐趣。学习Emacs也是因为乐趣,随着学习的深入,你对Emacs了解得越多,你可以定制的东西也就越多,Emacs就越来越像你身体的一部分一样,控制自如了。你肯定会为此花费掉大量的业余时间,不过你也会乐在其中。恭喜,你成为了一个Emacs粉丝。

所以,如果你决定要一探究竟,那么请跟随本系列吧。我会为你提供一个渐进的学习路线,而Emacs的世界会有更多有趣的东西等你去探索。