一年成为Emacs高手(像神同样使用编辑器)

做者: 陈斌(redguardtoo)javascript

版本号: 20160125html

更新时间: <2016-01-25 Mon>前端

原创时间: <2012-01-31 Tue>java

版权: 本文采用如下协议进行受权,自由转载 - 非商用 - 非衍生 - 保持署名 | Creative Commons BY-NC-ND 3.0,转载请注明做者及出处.node

简介

成为高手很容易.当初我在Vi阵营,偶尔用Emacs还忘记"退出"的快捷键,一年后我跨入高手行列.git

不少文章强调Emacs有多牛,但关于"如何作"则语焉不详.即便涉及到"如何作",谈细节多而方法论少,因此本文就 侧重方法论.程序员

全文结构以下:github

  • 为何Emacs值得学习,如对开源文化熟悉可跳过这一章,不然至少读一下态度一节
  • 本文最核心观点,要充分利用高手成果,不要从新发明轮子
  • 尽快掌握Emacs的步骤
  • 进一步提升的提示(社区,阅读,知识管理)
  • 跳出具体Emacs技巧,重要的是人
  • 答疑和小结

为何用Emacs(可选)

简单谈谈,因重点是"怎么作",不是"为何".web

真正精通后Emacs,其余编辑器天然精通

一旦尝过最好的,你天然了解好的编辑器应该有哪些功能.算法

好比一个内嵌的插件管理器是最基本的.

以下载了第三方插件,若是发觉其有问题,能够在不碰该插件原始代码的状况下修复.

插件服务器关闭了,应能够在自带的U盘上快速创建镜像.

目前流行的编辑器如Sublime Text还作不到以上几点.

Emacs 的特色决定了其社区水准不低

Emacs 用 Lisp 开发,Lisp 不一样寻常的语法决定了其开发者都是资深开发者,掌握了多门语言.

Lisp 并不能给你带来任何好处,因此其社区成员都是纯粹的技术爱好者,投机取巧的功利主义者对其没有兴趣.

和IDE比较,Emacs 作的更多更快

IDE针对特定语言或框架优化,而Emacs完成通用任务更有效.

例如,我碰到难题,须要上IRC请教国外高手(工做流是,粘贴代码到http://gist.github.com, 在irc提问,看网页,将解决方案粘贴回来),Emacs 集成了IRC工具和浏览器 (例如),操做就很方便.

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

口说无凭,请看高手操做的 youtube 视频, Emacs Power: Can your editor do THIS!

顺便说一下,不少初学者关心的代码自动完成,几门主流语言支持都不错(包括Java).

Emacs会永存

我的开发者会丧失兴趣,公司会倒闭.但自由软件基金会将一直存在下去.

Emacs做为其招牌软件也会维护下去,个人投资永不会贬值.

能够马上开始工做.

软件开源,配置是纯文本,且资源消耗小,安装包很小 (命令行版本 30M 左右),任何环境下均可用.

这在大项目中特别有益,例如,某项目需同时编辑 Perl, Java,C, Bash, SQL, 要编辑远程服务器上的代码,网速不快. Emacs的优点就体现出来了.

一年指的是一年中的空闲时间

我没说一年内须什么事都不干专学Emacs, 我最反对没有短时间回报的悬梁刺股.

我利用一年中通勤时间就取得了很大进步,自信到能够写下本文.

态度决定一切

重要的是头脑开放,不先入为主.

新手的问题是,根据以前习惯 盲目 设定了入门必知.有些必知还很费时间.

以我为例,

也要避免门户之见,好比用了Emacs就排斥Vim的快捷键.好比必定要Helm和Ido中二选一(我是同时用的).治疗就是重读武侠小说"笑傲江湖".

具体步骤

开始前,解释一下后文用到的命名惯例,

  • "C" 表示按下Ctrl键,"M"表示按下Alt键
  • "M-x my-command"表示同时按下"Alt"和"X", 输入"my-command",而后回车

无Linux/Unix经验新手的快速指南(可选)

建议,

  • 安装Emacs 24
  • 不安装任何第三方插件
  • 掌握基本知识,什么是环境变量(好比PATH, HOME之类的变量),什么是stdin, stdout, pipe
  • 读官方教程,学会基本的文本操做(大概十几个快捷键)
  • 使用Emacs 24自带的org-mode做我的管理
  • org-mode关键是用起来,只要记住按TAB键是展开内容就能够了,其余都不用学

这步的目的是:

  • 理解Emacs可爱之处
  • 知道Emacs如何和其余软件交互

读官方教程

按如下步骤阅读教程:

  • 不安装任何插件打开Emacs, 好比在Shell中运行命令"emacs -nw -Q"
  • 同时按下 Alt 和 X 健,输入 help-with-tutorial(相似快捷键后文简写为`M-x help-with-tutorial` 代替),回车.

仅需半小时.关于Emacs多难学的谬论能够休矣.半小时的代价微不足道.想一想你去练了多少个半小时吧.

即便你不打算使用Emacs默认的快捷键,这步也是必须的,不要跳过!

最起码要知道如下命令,

  • "M-x describe-variable", 快捷键"C-h v", 查看变量的文档
  • "M-x describe-function", 快捷键"C-h f", 查看命令的文档
  • "M-x describe-key", 快捷键 "C-h k", 查看快捷键的文档

以实际问题做为切入点

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

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

以我为例,我急需 GTD 的工具,而 Emacs 的 Org-mode 是同类软件中最好的(没有之一). 用 Org-mode 大大节省了时间后,我对Emacs爱屋及乌,兴趣高涨了100倍.

反面例子是不少人以啃Lisp教程开始他们的Emacs之旅,坚持下来的人寥寥无几.

待解决的问题设定优先度

关键在于理性地考虑你最迫切须要解决的一个问题.

以这个问题做为出发点,除此以外均可以妥协.

虽然Emacs无所不能,可是饭也要一口一口吃.有时候退一步进两步.

例如,我一直觉得Emacs的中文显示很完美,因此搞不懂为何有人会在字体配置上花那么多时间.在陆续接到反馈后,我才明白原来是由于我一直在终端下使用Emacs,终端软件能够完美显示中文字体,因此就没Emacs什么事了.须要配置字体的人用的是图形界面Emacs.

当初只在终端下使用Emacs是由于需链接到远程服务器.我认为这是重点.甚至为此放弃了漂亮的配色主题(后来发觉此牺牲毫无必要).

因祸得福,由此也避免了图形界面版本的全部问题.

站在巨人的肩膀上

这方面我是个负面榜样.刚开始抱着玩的心态,处处找有趣的配置粘贴到个人配置中去.

这是浪费时间!

我应一开始就照抄世界级大师 Steve PurcellEmacs 配置.

警告,Purcell 总爱试用最新的 Web 开发的新技术,对他而言稳定性不是第一位的,若是你有热情和能力,愿意一块儿折腾,那么水平会提升很快.

这个若是是很重要的前提,当我上了Purcell的船时,我已有10年开发经验,精通多种语言.

如你不肯折腾,那至少不要重复个人错误,不要质疑,不要创新,跟着高手作.直说了把,你是初学者,开始阶段应以模仿为主.这点怎么强调也不过度!

为了加深印象,让我再举一例.有人向我反映,Emacs 快捷键太多,背起来压力很大.个人建议是,拿高手配置来用,而不是强加给本身背快捷键这样无聊的任务.你会发觉高手已安装了名为smex 的插件,使直接输入命令比快捷键还快.

若是你还未信服,请再考虑一下个人理由:

  • 文章标题是 一年成为高手,不是一年入门.
  • 高手是世界级别的高手,不是关起门来一个小圈子内的高手
  • 我就是这么作的,你能够看看一年内我给他报了多少 bug
  • 说究竟是态度问题,若是你真下定决心,考虑到Purcell的天赋和勤奋,追赶他的最好办法只有加入他
  • 要超越高手就必须了解其标杆在哪,你须要一年时间去模仿去学习
  • 基于Purcell的配置给他报bug(甚至是提交补丁),你就是考虑到了他未考虑到的问题,至少在这点就超过他了,日积月累就很可观了.

好吧,你如今信服了.可是你是否 真正理解 了?

好比你是否立刻推论到:即便不用高手的配置,也可在github上订阅(watch)高手配置,其更新通知等价于免费的维护服务.

报bug

像武侠小说那样拜高手为师是白日作梦.惟一能让高手指点的办法是先付出.最可靠的付出就是报bug.

我就是这样学到一些高级Lisp技巧的.

不要有报bug低级的想法.不少高手都是乐于且善于报bug.却是菜鸟喜欢从新发明轮子.

帮助高手,你的起点就高,还有获得指点的好处.

持续改进

前提是起点高,要在高手已有工做上改善.即便是微小的改善,若是坚持一段时间,就是巨大的进步了,你就能够在这一点上笑傲江湖.

再找出另外一高手须要改善的地方,使用一样的方法.

例如,默认在Emacs中移动子窗口焦点不是很方便.需按"C-x O"屡次.我找到了emacs插件switch-window,只要按"C-x O"一次,会有提示子窗口编号,接下来只要输入编号就能够了.但还有改善空间,我又找到了window-number.el,只要按"M-NUM"就能够了.

window-number.el已完美,但Alt键仍是有点慢,我结合evilevil-leader,能够按逗号和数字飞速切换子窗口了.

加入社区更上一层楼

最重要的是专注.

例如,Quora.com上有不少有趣的话题.请克制兴趣,不去定阅和Emacs无关的话题.

Reddit

Reddit是最好的.优势是一直能访问.

Google Plus

Google Plus 贴子质量高.例如,我加入了 Linkedin和Facebook的Emacs论坛,目前都退出了.不是它们不专业,只是Google Plus讨论技术层次较高.

目前人气不如reddit,缘由在于Google.

GitHub 是 geek 云集的地方

GitHub 的版本控制服务很好.如今它的社区化倾向愈来愈强了,我喜欢.

例如,能够看一下 https://github.com/search?p=1&q=stars:>20+extension:el+language:elisp&ref=searchresults&type=Repositories 上最酷的 Emacs 插件.

Emacs牛人的博客

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

Quora.com

我偏心的是"列举最有用的命令"之类的具体问题.不少回答大开眼界.即便我已精通Emacs.

那种"如何入门"的问题,人人都能插上一脚.即便有高水平的回答,也淹没在众多平庸回答中.

若是你的问题就是比较泛泛而谈的,从一个能测量水准的具体问题入手找到高手,而后看高手是如何回答那些比较泛的问题的.

在 twitter 上以 "emacs :en" 按期搜索

twitter人多,更新结果快.

之因此加上":en"是由于要排除日文内容.

在 stackoverflow 上搜索相关讨论

google "emacs-related-keywords site:stackoverflow.com"

我会按期搜索,同一帖子反复精读.由于讨论质量很高.

http://emacs.stackexchange.com 是Emacs专门的问答子社区.

到 Youtube 上看 emacs 相关的视频

例如,我就是看了 Google Tech Talks 上这个 Org-mode 做者的介绍 而爱上 org-mode.

不过Youtube搜索结果是最佳匹配的.因为相关视频并很少,如按照默认算法,每次老是那几个.因此若是关注最新进展,搜索应以时间排序.

读书最有效

 

EmacsWiki

EmacsWiki 是社区维护的文档,是最酷插件和最佳实践的集合点.

有人抱怨文档太乱,质量良莠不齐.前者我有同感.后者不赞同.EmacsWiki文档质量至关高,因其是 惟一的 半官方文档.忍受其乱中有序的现状吧.

最佳阅读方法是,选定一特定主题,从头读到尾.这样对最新进展都了解了.是否要采用其建议另当别论.

Emacs Lisp 书籍推荐(可选)

Bob Glickstein的Writing GNU Emacs Extensions是最好的.

生动,例子丰富.做者用心安排了书的结构.例如,很早就介绍了defadvice的用法.defadvice 是Emacs Lisp的精华.

Xah Lee 提供付费Lisp教程也至关不错.

Steve Yegge的Emacs Lisp教程

他的Emergency Elisp很简洁.我特别喜欢"Statements"一章.

知识管理

不要低估长期管理的累积效应.

正面例子参考Steve Purcell的配置. 2000年开始14年的维护! 8年github记录! 1000多颗星的配置决非浪得虚名.

知识积累的越多,这些知识之间的联系就会越多.联系增加的速度是以指数的方式增加的.如从头来过,意味着积累的知识的书面记录丢失了.损失是很大的.基数已归零,增加的量又能有多少.

因此决不要重置配置!

这也是后文谈到为何要用工具保存配置和知识的缘由.

配置归入 github 的版本控制

个人配置见 https://github.com/redguardtoo/emacs.d.

版本控制能够认为是一个集中式的知识管理,任什么时候刻任何地点对配置的修改都要及时上传合并 (merge).这是积累能力的关键.

共享实际也是一种利己行为,有不少人使用个人配置,等于帮我测试.

将相关资料 (如电子图书,博客文章) 备份

我将全部资讯都放在 dropbox 的服务器上,这样资料就同步到个人智能手机和个人平板电脑上,我可利用空闲时间学习.

点击这里注册 dropbox 账号.注意,dropbox 客户端彻底能够在国内使用,虽然访问其首页可能有点问题.

我还写了许多博客文章.这些文章都存在org格式的文件中.最后发布的静态博客也归入版本控制,参见http://github.com/redguardtoo/blog.binchen.org.

第三方插件推荐

初学者的问题是装了太多插件,管理成了问题.

我建议的原则是少而精,被少数最优秀的插件培养出品味后,可自由挑选适合的.

标准以下:

  • 高品质
  • 常更新
  • 很强大

全部插件均可经过包管理器下载.

如下是清单:

名称 说明 同类插件
Evil 将 Emacs变为Vim 没有
Org org-mode,全能的笔记工具 没有
company-mode 自动完成输入,支持各类语言和后端 auto-complete
expand-region 快捷键选中文本,可将选择区域伸缩 没有
smex 让输入命令变得飞快 没有
yasnippet 强大的文本模板输入工具 没有
flymake 对不一样语言作语法检查 flycheck
helm 自动完成,在其上有插件完成具体功能 ido
ido 和helm相似,helm和ido可同时用 helm
js2-mode javascript的主模式,自带语法解释器 js-mode
w3m 网络浏览器(需安装命令行工具w3m) Eww
simple-httpd Lisp 写的 Web 服务器 elnode
smartparens 自动输入须要成对输入的字符如括号 autopair
window-numbering.el 跳转到不一样的子窗口 switch-window.el
web-mode 支持各类 HTML 文件 nxml-mode
magit 玩转git 没有
git-gutter.el 标记版本控制的diff(支持subversion) 没有

Emacs是一种生活方式

牛人其余方面也很牛.触类旁通你收获会不少.

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

我如今有意识地整理高手名单,观察他们 除了Emacs外 用什么工具.

例如, js2-mode 的维护者Masafumi Oyamada(网名mooz)也开发了keysnailpercol. 特别是percol,使我命令行效率提升了10倍.

这个阶段可称之为 心中有剑,手中无剑.

是否用Emacs不重要了,重要的是为所欲为.例如,不少人争论哪一个编辑器自带的文件管理较好.我从mooz那学到大招后,就跳出五行外,不在三界中了.

付之于行动

如何行动因人而异.

关键是真正理解本文要点.

例如,你是否意识到以前的章节意味着如下行动:

  • 找出全部插件的做者
  • 在Quora/Twitter/Github/Reddit/Google+上跟随他们
  • 通读他们已发表的贴子

答疑

 

菜鸟怎么开始

https://github.com/redguardtoo/emacs.d 参考"Install stable version in easiest way"一节.

只要点击下载两个zip文件就能够了,不需Git的任何知识.

Steve Purcell 的配置是否有文档能够参考?

除了 README 外没有,我主要是经过看 EmacsWiki 和源代码来了解.窍门是源代码文件的头部有使用指南和做者的联系方式.

高手的配置是否过重量级?

高手的配置都是轻量级的,由于他们知道如何优化.

好比有种叫Autoload的技术. 只有用到模块的某一功能时那个模块才会被载入内存. 我推荐的高手都知道这类技巧.

除了Purcell的配置,还有其余高手的设置吗?

搜了下github:

有没有更简单的配置?

可用 个人配置

  • 去掉了Git依赖.
  • 网络不是必须的
  • 安装了拼音输入法
  • C++支持强大

注意,Purcell做为顶尖Web开发者,会试用最新的Web技术,而个人配置Web类插件更新会滞后一段时间.另外个人工具链和Purcell不彻底一致.你本身权衡了.

该使用Emacs的哪一个版本

目前稳定版是Emacs 24.3 或 24.4,建议不要用高于此版本的Emacs.

一般不用担忧版本问题.主流的Linux发行版会处理.

Vi高手要转阵营吗?

嘿嘿,我也是Vi精通后转到Emacs的.就是由于Emacs的强大(例如和 gdb 的完美结合)以及其脚本语言是Lisp.

固然Vi的多模式编辑和快捷键比Emacs要高效得多,因此最佳方案是Vi+Emacs.

目前我用Evil, 在Emacs下模拟Vim,结合二者优势.

如今我是 神用编辑器之神!

警告,我默认启用了Vim的快捷键,不习惯可打开~/.emacs.d/init.el,将其中一行代码注释掉,细节参考README.

为何不少Vim高手不能接受Evil?

由于他们对Vim快捷键作了深度配置.Emacs默认要常常按Ctrl键,如自定义的Vim快捷键也用Ctrl键,不免有冲突.

解决办法是你们都使Leader(Vim直接支持,Emacs需第三方插件).

还有一个办法是呆在Vim的温馨区里.如能忍受没有org-mode和lisp的生活,那么不会有问题.

如犹豫不决,请重读"态度决定一切"一节.

我一旦认识到Evil和Evil-leader的潜力,马上把我Vim的设置按Emacs的重设了一遍。

更光辉灿烂的例子就是spacemacs的做者了,无数的github星星表明了他的成功.

不习惯默认快捷键,怎么办?

!

默认快捷键通过几十年考验至关高效,未成为高手前仍是要忍.

如必定要在用 Windows 快捷键的,可考虑 ergoemacs.

快捷键太多记不住怎么办?

不必记,我也只记经常使用的十几个快捷键.顺其天然,多用记住,不用就忘,很正常.

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

使用牛人配置后,界面有些奇怪的 bug,怎么改?

不要改! 参考上文站在巨人的肩膀上一章,你以为奇怪是由于缺少经验,把某些特性误认为是bug.请坚持至少一年.

例如,有人反映右边第80列处总有一竖线,但愿能去掉.

实际上这是一特性,提醒用户一行宽度不要超过第80列. 这是 每行不要超过 80 列的缘由.

我建议第一年应 尽可能理解而不妄加判断.

已更新软件包,可是没有任何做用,也没有任何错误信息

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

若有任何关于如何配置的问题

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

例如,问:在 .emacs.d 中的 init.el 文件起什么做用?答:google "emacswiki init.el".

使用牛人配置后启动报错,如何解决?

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

如排除了以上缘由,带上"–debug-init"参数从新启动,而后将错误信息及环境报告到对应的开发者.

报告时应给出细节.例如不少读者给个人bug都是因为第三方插件版本较新引发的,我拿到版本号后,才能下载特定版本已重现 bug.不然只能靠猜,来回邮件浪费不少时间.

牛人的配置太复杂,仍是从一简单的配置改起好控制

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

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

但愿本身掌控坦率地说是一个非技术问题,由于没有自信心,因此有补偿心态. 但愿经过一种错误的方式来证实本身.结局无非是恶性循环.

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

为何我用了牛人配置后本身额外添加的插件无效

Emacs 是个开放平台,其众多插件发布前并不必定有严格的测试.因此插件之间可能有冲突.

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

即便你发觉了牛人还没有来得及处理的bug,最有效方法是提交报告给牛人,而不是本身去钻研Lisp.

我想用 Windows 版本的 Emacs 而不是 Cygwin 版本,怎么作?

需对命令行操做熟悉.关键知识点有两个:

  1. 设置 HOME 环境变量,由于 .emacs.d 中的某些 elisp 脚本假定 .emacs.d 在 HOME 所指定的路径中.
  2. Emacs 的某些功能须要使用第三方的命令行工具,这些工具的路径应该添加至环境变量 PATH 中 (可选,缘由见后面).

如你不知道如何在 Windows 下添加修改环境变量,不知道如何安装第三方工具,建议仍是先用Cygwin中的Emacs,因它已自带工具,没有的话安装也方便.且在 Cygwin 下环境变量 HOME 默认已设.

第三方命令行工具清单请参考个人.emacs.d 中的 README.

Emacs 在代码跳转和自动完成上和商业IDE有差距,怎么办?

这个差距说究竟是后端语法解析引擎的问题.一般这个问题都是以微软的Visual Studio和IBM的Eclipse做参照.

就C++来讲目前有用苹果公司的 clang 的方案,效果不错.具体用什么插件来调用这些引擎有不少选择,不展开了.

实战中,我一般就用ctags做为后端引擎,因其通吃全部语言. 虽然解析效果差一点,可是恰当的命名规范(尽可能少重名)能够弥补.

如ctags不满意,可考虑用Gnu Global (gtags).

以上讨论的都是后端引擎.

就前端界面来讲,作的比较好的是company-mode,维护很活跃,你可就特定语言如何配置咨询其开发者.

Java和C#语言的主力开发工具最好用IDE而不是Emacs.C#又比Java更难在Emacs中使用.缘由你懂的.

网页浏览

强烈建议用Keysnail.

这是最佳的,我已试过 全部 可选项.

邮件

我用Gnus. 但有不少其余方案.

如你必须访问Microsoft Exchange Servers, 还要用Davmail.

用了Davmail后, 还能够用Popfile 来分捡邮件. Davmail+Popfile让我生活在天堂.

为何 Emacs 启动时从服务器 (elpa) 安装第三方软件包 (package) 会失败?

请启动 Emacs 后,运行 `M-x package-refresh-contents` 以从服务器更新软件索引,而后重启 Emacs 便可.

若是你没有用Emacs24,没有彻底拷贝高手的配置 (这是本文的中心思想),那么你须要安装package.el,细节参考这里.

Emacs 下载软件包 (package) 是经过 http 方式,因此若是网络出问题的话你须要用 http 代理服务器,具体操做见后文.

有些网站 Emacs 访问不了

在命令行中启动 Emacs 时加上 "http_proxy=your-proxy-server-ip:port" 前缀.

例如,

http_proxy=http://127.0.0.1:8000 emacs -nw

有些软件包下载不下来,也不会用代理

那么就用个人Emacs配置.

和个人配置配套的是我创建的独立的第三方包服务,请参考其主页上的README.

早点学习 Emacs Lisp 是否有助于成为 Emacs 高手?

否,只会起阻碍做用!

Lisp语法和一般的语言不一样,除非有至关编程经验(至少10年),通常人都会对其有一点负面情绪(固然是毫无道理的偏见!).学习任何新东西,长期来讲兴趣最重要.一开始应避免任何负面情绪.

Emacs Lisp又是只用于Emacs的语言,有大量术语须要掌握.如"Buffer","Yank","Font face",只有资深用户才能理解.

因此在软件使用没有至关基础前学习其拓展语言是浪费时间.

参考前文关于找到切入点的一节,我推荐的顺序是,先用优秀的配置享受到好处,有了兴趣后学习Lisp就水到渠成了.

有世界级高手(名字不点了)对个人建议不觉得然,他说Lisp很强大颇有趣,应该先学.

可是他的盲点在于,忘记了本身转向Emacs前在其余编辑器上已一览众山小了.他用Python拓展Sublime已熟到厌烦,Lisp的奇特语法反而刺激了兴趣.编辑器的经常使用术语也不在话下. 而本文针对的是大多数的凡人.

选择适合本身的路,一年之后天才也好,凡人也好, 达到的高度都是同样的.

掌握 Emacs Lisp 是不是成为高手的必要条件?

否.但Lisp是很强大的语言,特色是一切皆可改.当我说"一切"的时候,我就是指字面意义上的"一切",不是修辞上的夸张.

我用过许多编辑器,除了Emacs没有一个能作到"一切可改"这点 .vim也不行.

因此学点Lisp对提升Emacs水平没坏处.另外Lisp语法不错,值得程序员一学.

顺便说一下,Lisp很简单,比VB容易多了,一旦你适应其语法,就会发觉它其实蛮友好的,至少少打不少字.

有必要学习键盘宏(Keyboard Macros)吗?

不必,Lisp足够了.

可是键盘宏生成的Lisp代码有时候比较有趣,建议你精通Lisp后再来玩玩键盘宏.

基本操做我会了,下一步学什么迷茫中

关键是你打算用这把瑞士军刀作什么.

前文已强调过以兴趣和解决实际问题做为切入点.

举一些我本身的例子说明:

  • 我有写博客须要,懒得用Wordpress那个破界面,因此用org2blog
  • 开发Ruby on Rails程序须要IDE,装了 rinari
  • 作跨平台C++桌面开发,装了cmake-mode
  • 需在多个子窗口间跳来跳去,因此装了window-numbering.el
  • 大项目需同时调试多种语言,因此装了evil-nerd-commenter,这样不用记特定语言的语法就可注释掉代码.

如何学习org-mode?

Org-mode简明手册 是不错的中文教程.

最好的英文教程是Carsten Dominik(Org-mode发明者)在google tech talks上的演讲.其要点为org-mode本质是一个文本文件,只要记住按TAB展开或者缩进条目就能够了.其余特性可慢慢学.

对于"一切都用Emacs来完成"的观点你怎么看?

不要走火入魔.Emacs本质是个平台,提供了无限可能性.

从实用角度讲,Emacs和其余工具结合有时能更快完成工做(不过在没有一年的修炼以前 千万不要猜Emacs不能作什么).

如下是Emacs不必定能吃独食的地方:

  • 剪贴簿: 应结合命令行工具xsel(Linux)/pbpaste(OSX)/putclip(Cygwin)
  • Web浏览: 用Firefox结合插件如keysnail
  • 远程登陆管理: 用screen/tmux
  • FTP: 用专门的FTP软件
  • 文件管理: 用专用软件
  • Lisp速度比较慢,若有大计算量的工做,交给第三方工具来做.

重点是头脑灵活,既坚信Emacs无所不能,也适当变通.

联系我

这是个人 Twitter 和 Google Plus 以及 微博,也可经过我 email<chenbin DOT sh AT GMAIL DOT COM>联系我.我在新浪 weibo.com 上开通帐号 emacsguru.

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

我不回答具体配置的问题.如你通读本文,应知道哪里找答案更好.

结语

再强调一下本文最重要的观点:

  • 以 基于解决实际问题产生的兴趣引导
  • 彻底照抄世界顶尖高手如Steve Purcell的配置,尽可能避免本身写Lisp
  • 给高手报bug就是最好的学习,
  • 学习Emacs和 学任何专业技能(拉小提琴,解数学题)的方法论都是同样的,请参考一万小时天才理论.

关键是你以严肃的态度把其看成专业技能学习.

不少人之因此不赞同个人核心观点,是由于心里深处还有把Emacs当玩具来炫耀"我有多酷"的意识.

Emacs强大到能够做为另类娱乐来博眼球.但本质是专业人士使用的神器.

打个比方,职业杀手对于刀只关心两件事:

  1. 高效地杀人
  2. 任何环境下均可靠

刀的装饰是否漂亮或技巧是否本身原创对他并不重要.

Emacs就是那把刀.

如何报bug

本文官方网址为 https://github.com/redguardtoo/mastering-emacs-in-one-year-guide.

有任何疑问,请在以上网址报bug.这比Email快.因GitHub会以邮件通知我,GitHub邮件永远归类至个人最优先文件夹下.

如给我发Email,会淹没于垃圾邮件中.

不要复制粘帖本文

Emacs 本质上是一个社区和平台,不断有新的有趣的人和技术出现.我会按期更新本文.

若是你拷贝粘帖全文,会使本身和他人错过更新.

我建议分享本文的连接,

from: http://blog.csdn.net/redguardtoo/article/details/7222501/

相关文章
相关标签/搜索