版本 : 20130406

更新时间: 2013-04-06 六

很容易.一年多前我还在Vi阵营,偶尔使用Emacs还总是忘记”退出”的快捷键,但是一年后我跨入高手行列.

1 为什么要学习Emacs(可选)

1.1 和单纯的IDE比较,Emacs可以做的更多更快

这里的更多并不是和IDE比支持某编程语言的特性更多,而是指Emacs内可完成的通用任务比较多更快捷.

例如,我做开发时碰到难题,需要实时上IRC请教国外高手(工作流包括粘贴我的代码到pastebin或者gist,在irc内提问,看 页,将解决方案粘贴回来),emacs集成了IRC工具和浏览器(w3m),操作就很方便.

我使用Visual Studio多年了,Firefox使用我也是高手,相信我,大多数情况下还是Emacs更快.

当然口说无凭,请看以下两段高手操作的youtube视频:

  • Writing PPT with org-mode and beamer in Emacs
  • Emacs Power: Can your editor do THIS!

1.2 使用Emacs可以立刻开始工作.

软件是开源的,配置是纯文本,而且软件的资源消耗较小,安装包很小(命令行版本的安装包30M左右),所以在任何环境下我都可以用Emacs开始工作,overhead很小.

1.3 一年指的是充分利用空闲时间,一年后自然水到渠成

我没有说一年内必须什么事也不干专门学Emacs,悬梁刺股没有短期利益回 的学习方法是我最反对的.

我赞成的方法是,开始阶段花极少的时间得到巨大的回 (如下文谈到的Org-mode),以兴趣做导向.

每天花多少时间取决于个人需要和如何管理,以我为例,每天八小时上班时间中有很多零碎时间可以利用,上下班通勤时间有一个小时可以利用.

1.4 态度决定一切

长期来说你能取得的成就是由态度决定的.

优秀人士的两个特点:

  1. 勇于接受新事物
  2. 追求更强的过程本身就是目的;

2 读官方教程

打开Emacs后,同时按下Alt和X健,输入help-with-tutorial(后文中,类似快捷键以简写`M-x help-with-tutorial`代替),回车.

仅需半小时.关于Emacs的多难学的谬论可以休矣,因为半小时的代价微不足道.想想你去年有多少小时白白虚度了吧.

这步是必须的,不要跳过!

例如,我发觉很多读者的问题是不知道如何查看变量函数的文档,这在官方教程中都有说明.

3 以兴趣和急需解决的问题作为切入点

因为如果微小的努力能得到巨大的回 ,你就会越学越有乐趣,进入一个感情上的正反馈.

长期来说,在任何领域要成为高手,兴趣是最重要的.

以我为例,我急需GTD的工具,emacs的而org-mode是世界上最好的GTD工具(没有之一).在使用org-mode大大节省了时间后,对于emacs爱屋及乌,兴趣高涨了100倍.

4 站在巨人的肩膀上

这方面我是个负面榜样.开始阶段我还是抱着玩的心态,喜欢到处找有趣的配置粘贴到我的.emacs中去.

完全是浪费时间!

我应该一开始就照抄 世界级大师Steve Purcell的emacs配置(注意,Purcell的af5ca840版本支持Emacs23.1及更高版本,在Linux/OSX/Cygwin下测试过,更高版本只保证支持emacs24,因purcell只在mac下用emacs24版本,如果一定要使用emacs23,可考虑我的版本, 址见后文).

我请求你不要重复我的错误,不要质疑,不要创新,跟着Steve Purcell这样的高手做.

直说了把,你是初学者,开始阶段应以学习模仿为主.这点怎么强调也不过分!

为了加深印象,让我再举一个例子.一些读者向我反映,Emacs快捷键太多,背起来压力很大.实际上这是初学者先入为主的偏见.对高手来说,有了恰当的工具后,快捷键很多情况下并不需要.盲目地去背快捷键只会延迟你成为高手那一刻的到来.

顺便说一下,Steve Purcell的配置需要git才能更新,这意味着你需要安装git和cygwin(限于windows平台).这是买一送二,我又给你介绍了两个高手必备的世界级工具.

考虑到我的热情会被认为是传销,而我的严密逻辑和事实论证可能被忽视,我有必要简单明了地说明推崇Steve Purcell原因:

  • 已有很多人推荐他的配置(请google)
  • 能力出众,背景相当好(我已调查过他的Linkedin Profile)
  • 人近中年,心智成熟(例如,他只在Mac下使用Emacs24,但是能够根据我在Linux/Cygwin下使用Emacs23的需求做调整).
  • 工程经验丰富(看他的代码一目了然)
  • 勇于求新,不断尝试新插件,在他这个年龄极为突出

以上事实在我给出的 址中稍作调查即可得知.

5 在twitter上以”emacs :en”定期搜索

twitter人多,更新结果快

6 在google plus上搜索emacs相关内容

google plus技术geek比例高.我推荐Xah Lee,他的个人 站为李杀 , 其账 名为ErgoEmacs.Xah Lee每周二会在Google Plus上组织一次Emacs问答.

7 加入google plus的Emacs 区

Google Plus的Emacs 区在此时( 2012-12-25 二)Geek的气场非常强,讨论的贴子质量非常高.我上过很多大众和小众的Emacs 区,这是我的经验之谈.例如,我加入了Linkedin和Facebook的Emacs 区,目前打算都退出.并不是这些 区不够专业,只是Google Plus讨论问题的技术层次比较高.

8 订阅Emacs牛人的博客

最好的是Planet Emacsen,是多个Emacs博客的集合.

9 在stackoverflow上搜索emacs相关的讨论

google “emacs-related-keywords site:stackoverflow.com”

我会定期搜索,同样的帖子反复精读.因为stackoverflow上的讨论质量很高.

10 github是我的新欢

github的版本控制服务很好.现在它的 区化倾向越来越强了,我喜欢.

例如,可以看一下https://github.com/languages/Emacs%20Lisp上最酷的Emacs插件.

11 使用google快讯

每周一次给我邮箱发一次摘要,仅限最佳结果.这样的话信息质量可以得到保证.

12 将emacs配置管理起来

我将emacs配置纳入github的版本控制,见https://github.com/redguardtoo/emacs.d.

版本控制可以是认为一个集中式的知识管理,任何时刻任何地点对Emacs配置的修改都要及时上传和合并(merge).这点对于个人能力的长期积累很重要.

13 将emacs相关资料管理起来

我将我收集的所有Emacs相关资讯都放在dropbox的服务器上,然后用dropbox的软件同步资料到我的智能手机和我的IPad上,这样我可以充分利用空闲时间学习.

请点击这里注册dropbox帐 .注意,dropbox客户端完全可以在国内使用,虽然访问其首页可能有点问题.

14 Emacs Lisp书籍推荐(可选)

关于Emacs Lisp (elisp)书籍,我已读完<An Introduction to Programming in Emacs Lisp by Robert J. Chassell>.我建议你不要读该书.因为写得不好.很枯燥,重点不突出.

Xah Lee提供付费Emacs Lisp教程也相当不错.

15 订阅EmacsWiki

EmacsWiki是一个 区维护的Emacs文档,可以认为是最酷插件和最佳实践的集合点.

16 到youtube上看emacs相关的视频

17 认识到Emacs是一种生活方式

如果你照着我以上的做法做,就可以认识到Emacs牛人其他也很牛.Emacs实际上体现了牛人的一种生活方式.

像那些牛人一样思考,像那些牛人一样做事,不要怀疑,不要犹豫,很快你就会发觉自己也开始有些牛人的气质了.

例如,Sacha Chua就是这样一个有牛人气质的女孩,这是她的Youtube录像. 她学习Emacs的方式是让Emacs自动将手册语音合成, 这样她在房间里走来走去的时候也可以听文档了.

想想看, 这些用Emacs的人都是什么样的Geek啊!所以,我认为Emacs不仅仅是一种工具,它是个 区,一种文化.

对我而言,加入Emacs 区让我学会了谦卑.当我明白了Emacs的其朴素的设计思想和其强大的可拓展性后,我的感觉是敬畏,因为我做不出这样的软件.

18 小结

看到这里你应该很清楚了,我的方法就是以兴趣作为切入点,以天才作为榜样,大量阅读,大量练习.

如果你想获得真才实学,想变得更强,变得更优秀,这就是唯一的方法,唯一的捷径.

这个方法不是我发明的,古往今来的杰出人士都是这么做的,如果你需要一点”更科学的”论证,请参考一万小时天才理论.

19 联系我

这是我的twitter和google plus以及微博,也可以通过我的email<chenbin DOT sh AT GMAIL DOT COM>联系我.我也在新浪weibo.com上开通账 emacsguru.

我的主力博客为http://blog.binchen.org.

20 答疑

20.1 Steve Purcell的配置是否有文档可以参考/h3>

除了README外没有,我主要是通过看EmacsWiki和源代码来了解.一个窍门是通常主源代码文件的头部有使用指南.

20.2 Steve Pucell的Emacs配置需运行git和subversion,有没有更简单的配置/h3>

那么你可以用我的配置:

  • 去掉了git和subversion的依赖. 你只要下载我的配置,确保 络OK(因第一次启动Emacs会自动下载安装软件包).
  • 已安装了拼音输入法eim
  • C++支持强大,因我还做一些桌面开发
  • 我会两到三个月从Purcell的配置同步一次

注意,Purcell是顶尖的Web开发者,他会试用各种最新的Web开发技术,如果你用了我的配置,Web开发插件更新会滞后一段时间.另外我的开发工具链和Purcell的不完全一致.你自己权衡了.

20.3 我已是Vi高手,为什么要转到Emacs来/h3>

嘿嘿,我也是Vi精通后转到Emacs的.我转换阵营的原因就是因为Emacs的强大(例如和gdb的完美结合)以及其脚本语言是lisp.

警告,Steve Purcell和我默认都启用了Vim的快捷键,如果你不习惯的话,可以打开~/.emacs.d/init.el,将其中相应的一行注释掉,具体注释哪一行请参考README.

20.4 我对于Emacs的默认快捷键很不习惯,怎么办/h3>

Emacs的快捷键是经过几十年考验相当高效的,我建议你在未成为高手前还是学习Emacs的默认快捷键.

如果一定要在Emacs下用Windows快捷键的,可以考虑ergoemacs.

20.5 Emacs快捷键太多记不住怎么办/h3>

没有必要记快捷键,我也只能记住常用的十几个快捷键.顺其自然,常用的命令你自然会记住快捷键,过一段时间不用了,又会忘掉,这很正常.

目前很多高手在用Smex,可以飞快输入命令,很多快捷键实际上不需要了.

20.6 使用牛人的Emacs的配置后,发觉界面有些奇怪的bug,怎么改/h3>

不要改!参考上文[站在巨人的肩膀上]一章,你觉得奇怪可能是因为缺乏经验,把某些特性误认为是bug.请坚持至少一年.

我建议你学习Emacs的第一年的原则应是,理解而不判断.

20.7 以按指示下载更新软件包,但是好象没有任何作用,也没有任何错误信息

删除home目录下的.emacs,~/.emacs.d/init.el就是取代原来的.emacs.

20.8 我有任何关于如何配置Emacs的具体问题

  • 读官方教程
  • 请善用google和我提供的信息

例如,问: 在.emacs.d中的init.el文件起什么作用: google “emacswiki init.el”.

20.9 使用牛人的配置后启动emacs 错,如何解决/h3>

首先确认你已装上了*你需要的*第三方命令行工具,这些工具是可选的,清单见我的README.

如果排除了以上原因.重新启动emacs,带上”–debug-init”参数,然后将显示的错误信息及环境 告牛人,给我也行. 告bug的方式最好是用github的bug跟踪系统.

告bug应该给出所有细节.例如很多读者给我的bug都是由于第三方插件版本较新引起的,我拿到版本 后,才能下载特定版本的插件以重现bug.否则基本是无从下手,只能靠猜,来回邮件会浪费你很多时间.

20.10 牛人的Emacs配置太复杂,不容易掌控,还是我自己从一个简单的.emacs改起好控制

那么你就是走我后悔莫及的老路,一个人在黑暗中摸索.开头兴致很高,但现实是残酷的,碰到复杂问题解决不了.于是选择逃避,最好的借口是Emacs太复杂,放弃Emacs.

我最终醒悟过来,走上了光明大道,很多走上岐路的人恐怕就没有这个觉悟和毅力了.

希望自己掌控坦率地说是一个非技术问题,因为没有自信心,所以有一种补偿心里.希望通过一种错误的方式来证明自己.结局无非是恶性循环.

正确地方法是放下身段至少一年(我已反复强调这一点),打好基本功,读书,虚心地向高手学习.

让我举一个例子说明:有一个读者向我反映他用了purcell的配置,但是Lisp的环境花了三天时间也搞不定.虽然我对除Elisp以外的其他Lisp方言毫无经验,还是花了15分钟帮他解决了这个问题.解决方法很简单,就是指定一下用哪个Lisp解释器.

解决该问题需要的基本功很简单:

  • 知道管道(pipe), stdout,stderr是什么.这是Linux下做系统开发最最基本的知识.
  • 读文章一开头推荐的官方Emacs教程,知道如何使用在线帮助.我解决该问题的关键也就是把文档读了一下,文档中已经清楚地说明如何设置Lisp解释器
  • 知道如何Google.我知道要设置的变量名后,代码懒得写,直接以变量名搜到相应代码(一行而已),拷贝粘帖.

20.11 为什么我用了牛人的配置后自己额外添加的插件无效

Emacs是个开放平台,其众多插件release之前并不一定有严格的测试.所以插件之间可能有冲突.

这也是我为什么建议初学者直接使用牛人配置的原因,因为牛人已经解决了众多兼容性的问题,你只要直接享受他的服务就行了.

即使你发觉了牛人尚未来得及处理的bug,最有效的方法是提交bug 告给牛人,而不是自己去钻研elisp.

20.12 我想用Windows版本的Emacs而不是Cygwin版本的Emacs,怎么做/h3>

需要对基本的命令行操作有一定的熟悉.关键知识点有两个:

  1. 设置HOME环境变量,因为.emacs.d中的某些elisp脚本假定.emacd.d在HOME所指的路径中.
  2. Emacs的某些功能需要使用第三方的命令行工具,这些工具的路径应该添加至环境变量PATH中(可选,原因见后面).
  3. 替代步骤2的另一更好的方法是使用第三方插件将Windows版本的Emacs和Cygwin的工具和*文档*完美结合,参考

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年5月18日
下一篇 2013年5月19日

相关推荐