工作两年(二)——进入emacs的世界

原创 2005年04月26日 21:31:00

emacs是我开始系统学习的第一个自由软件,也是到目前为之我用得最熟的软件。

第一次听说emacs是在读研的时候,那篇文章的内容都忘光了,只记得仿佛是说emacs是专业程序员的必备工具之一。当时也就是留了个印象,没太当回事,上班后,因为项目要求源代码文件格式必须为unix文件格式,而且每个人给了一个SlickEdit的license,推荐使用。后来我发现项目元老们都是用emacs的,就尝试着学起来,哪知一发不可收拾,完全被emacs的世界给迷住了。

其实,emacs的学习曲线在开始阶段是很陡的,也就是说学了很多也不见什么效果,一位元老就跟我说过,当初他从vi转向emacs时有6个月时间什么也干不了(估计有夸张的成分)。所幸作为公司的新人,开头两个月处于学习阶段,没什么任务压下来,看文档看腻了就学学emacs,等后来接任务了就边干边学,直到后来越用越熟练,用到的功能越多,现在可以说完全离不开emacs了。

在用emacs之前我都是用Delphi或VC++自带的编辑器,那时对编辑的理解就是敲键盘,把程序一个字母一个字母地敲进去,从来没想过它还能提供其它功能。emacs非常重视编辑,认为编辑是程序员最频繁的工作之一,因此提供了丰富的操作供程序员使用。这些功能中有些是emacs独有的,有些也被其它编辑器——如vi等——支持,但往往都是Windows下的编辑器所缺少的。比如说以单词为粒度遍历程序或文档;可以按组合建(M-d)直接删除一个单词,就像用DEL删除一个字母一样快;又比如所有的剪切和复制内容都被保存起来,然后通过C-y粘贴最后一次剪切或复制的内容,通过M-y取出以前的内容,等等。一度让我赶到非常爽的命令是M-x comment-regionM-x uncomment-region,它们可以快速将大段代码注释起来或去掉注释,并能根据不同的语言选择不同的注释符号,如C++程序会用//,shell和Perl程序会用#。

编辑和浏览是emacs最基本的功能,在此基础上,配合emacs提供的丰富接口,使其成为非常强大的开发工具。难怪有人开玩笑说某些人甚至就生活在emacs中,因为在emacs里可以做任何事:-)。我现在用得最多的就是与cvs的接口和各种diff功能。emacs提供两个包调用version control工具,它们是VC和PCL-CVS,一般操作单个文件用VC,操作整个CVS tree的时候使用PCL-CVS。emacs之所以方便是因为它将cvs各种命令显示的信息放在buffer里,这样,不仅可以使用emacs提供的最基本的浏览和查找功能,而且emacs会做一些高亮处理,使得信息主次分明,利于浏览。如果是在shell下运行命令,像log或diff显示的信息都比较长,不利于查看,更没法查找,除非你把输出重定向到一个文件里,再用编辑器打开。另一个非常有用的命令是M-x vc-annotate,这个命令将当前文件里每一行的信息都显示出来,例如最后一次修改的日期、版本号和修改者,我一般在看代码有不懂的地方就运行一下这个命令,然后就可以找相应的人去问了。参加了大项目才知道,version control和diff对一个程序员意味着什么。

emacs在某种程度上也可以看做是个IDE,因为你可以在emacs里编译、调试程序。编译命令是M-x compile,然后你会看到缺省的命令是make -k。如果makefile不和当前源程序在同一个目录下,可以稍加修改,把make -k改成cd some/directory && make -k。编译信息会显示在一个单独的buffer里,如果编译出错,也可以通过点击出错信息直接定位到错误的源程序所在的行。如果程序是用gcc编译的话,也可以在emacs里调用gdb调试,因为我们的程序不是用gcc编的,所以没怎么用过调试的功能,尝试过一次,感觉和在命令行下调用gdb差不多,好处仍然是信息都显示在buffer里,可以使用emacs强大的查找和浏览功能,而且源文件显示在单独的buffer里,不像命令行下看到的内容有限,经常要调用显示命令。

emacs还有很多强大的功能,再介绍几种我用过的。Calendar/Diary功能、方便画字符图形的picture-mode、可以收mail看newsgroup的GNUS等等,甚至可以播放mp3!emacs之所以拥有如此众多的功能,是因为它带有一个解释器,可以解释执行Emacs Lisp程序,除了少数原语是用C实现的外,绝大多数功能都是用Emacs Lisp语言实现的,而当某人想要某种功能而emacs里又没有的话,他就可以自己实现,然后贡献出来,造福大家。你可以在http://www.emacswiki.org/找到很多有趣的东西。

其实,emacs调用了很多外部程序来实现功能,所以,在学习emacs的同时,我也学会了许多其它的自由软件,对我来讲,这是一个非常美妙的学习过程。过年回家的时候,我把Introduction to Emacs Lisp和The Emacs Lisp Reference Manual通读了一遍,虽然没有全部看懂,甚至有些内容都没记住(Lisp实在是一种非常不同的语言),但是至少可以看懂一些简单的程序了,希望在不久的将来能用上自己开发的功能。

相关文章推荐

Emacs(二)——移动光标

Emacs 之移动光标 行末换行问题 自动补全功能 在 Emacs 失去响应的时候 光标的移动 重复命令...

使用emacs的org-mode进行时间管理(二)——TODO

转载至http://www.laihj.net/2009/12/emacs%E7%9A%84org-mode%EF%BC%BBtodo%EF%BC%BD/  650) this.width=650;...

Emacs才是世界上最强的IDE

Emacs才是世界上最强的IDE - 序言 http://emacser.com/emacs-ide.htm 读书的时候, 我们实验室的一位同学经常在摆弄emacs和vim, 跟我...
  • gxp
  • gxp
  • 2011年10月16日 14:26
  • 606

Emacs 的世界

开源界流行一句话:现今有三种编辑器,一是 Emacs,二是 VIM,再者就是其它。 Emacs 项目 Emacs 实质上是一组文本编辑器的集合。 GNU Emacs 是 GNU ...
  • yuyin86
  • yuyin86
  • 2012年05月05日 09:29
  • 510

第一次实习面试结合近两年工作的杂谈

一次简单代码题引发的个人感想 事情是这样的:  大三学期末,苦于一直隐居山林,我想去公司实习锻炼一下顺便感受一下咱们软件界。正好看到有西安的公司(众所周知,西北农林科技大学,址在杨凌,北校区居于山上,...

一份诚恳的互联网找工作总结和感想(附:怎样花两年时间去面试一个人)

找工作季来了,互联网大潮也将至。近来陆续有不少师弟师妹校友求分享各种资料和经验,想来手头上确实还有一些资源,也包括当初博主的师兄师姐们以及某些无私的大牛们分享的资料,笔经面经以及感想。于是翻出来看看,...

工作两年,新起点,新征程

工作两年多了,其实酝酿这篇文章很久了。直到近期,第一份工作终结,也算画上圆满句号了。得来闲暇,发发牢骚。某种意义上说,也算是第二次跳槽了,第一次是大学毕业,直接该行了,不知到老师们怎么想。 工作第一...
  • leon709
  • leon709
  • 2013年08月31日 18:19
  • 1294

写在2010年最后一晚,我这两年的工作总结

写在2010年最后一晚,我这两年的工作总结rcfalcon在这将近两年的工作里,发生了太多的事情,有了太多的收获和惊喜。一直想将他们付诸笔下却没有这个动力或者时间来实现,今天选择在2010年的最后一个...

工作两年后的一点小感想

从大学毕业后,已经工作了快两年。从第一份工作的忐忑,懵懂的选择,到如今的慎重抉择,其中的变化,连我本人也没有在平时察觉,一切自然而然。这两年的历程虽然算不上辉煌,但也没有掉过太大的坑,跟些刚毕业的学弟...
  • LQkitty
  • LQkitty
  • 2016年03月28日 12:09
  • 175

IT行业工作两年半小结

启用新的CSDN账户,是想对自己有个新的认识,新的开始。   工作两年半了,最近想了好多,总觉得这两年半来,走了很多弯路,但是总得来说,还是成熟了许多,也失去了很多。思考得越多,越觉得这两...
  • chcucl
  • chcucl
  • 2012年10月10日 19:12
  • 758
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:工作两年(二)——进入emacs的世界
举报原因:
原因补充:

(最多只允许输入30个字)