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

做者:陈斌(redguardtoo)javascript

版本:20150317html

更新时间: 2015-03-17 Tue前端

原创时间: 2012-01-31 Tuejava

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

1.1 简单介绍

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

很是多文章强调Emacs有多牛,但关于"怎样作"则语焉不详,即便涉及到"怎样作",谈细节多而方法论少,因此本文就側重方法论.github

全文结构例如如下:web

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

1.2 为何用Emacs(可选)

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

  • Emacs 的特色决定了其社区水准不低
    Emacs 用 Lisp 开发,Lisp 不一样日常的语法决定了其开发人员都是资深开发人员,掌握了多门语言.

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

  • 和IDE比較,Emacs 作的不少其它更快
    IDE针对特定语言或框架优化,而Emacs完毕通用任务更有效.

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

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

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

    顺便说一下,很是多刚開始学习的人关心的代码本身主动完毕,几门主流语言支持都不错(包含java).

  • Emacs会永存
    我的开发人员会丧失兴趣,公司会倒闭.但自由软件基金会将一直存在下去.Emacs 做为其招牌软件也会维护下去,个人投资永不会贬值.
  • 使用 Emacs 可以立马開始工做.
    软件开源,配置是纯文本,且资源消耗小,安装包很是小 (命令行版本号 30M 左右),不论什么环境下均可用.

    这在大项目中特别故意,好比,某项目需同一时候编辑 Perl, Java,C, Bash, SQL, 要编辑远程server上的代码,网速不快. Emacs的优点就体现出来了.

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

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

1.3 详细步骤

在正式開始前,我需要解释后文会用到的命名惯例,

  • "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多难学的谬论可以休矣.半小时的代价微不足道.想一想你去年了多少个半小时吧.

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

    最起码要知道下面命令,

    • "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是因为需链接到远程server.我以为这是重点.甚至为此放弃了美丽的配色主题(后来发觉此牺牲毫无必要).

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

  • 站在巨人的肩膀上
    这方面我是个负面模范.刚開始抱着玩的心态,处处找有趣的配置粘贴到个人配置中去.

    这是浪费时间!

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

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

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

    如你不肯折腾,那至少不要反复个人错误,不要质疑,不要创新,跟着高手作.比方 Eric Schulte 的 Emacs-starter-kit 很是适合刚開始学习的人.Bozhidar Batsov 的配置 也不错 (不必定适合刚開始学习的人).也可用 个人配置.

    直说了把,你是刚開始学习的人,開始阶段应以模仿为主.这点怎么强调也只是分!

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

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

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

    • Google Plus是最好的
      Google Plus 此时气场很是强,贴子质量高.我上过很是多社区,没有比它更好的了.好比,我增长了 Linkedin和Facebook的Emacs论坛,眼下都退出了.不是它们不专业,仅仅是Google Plus讨论技术层次较高.

      如你仅仅能增长一个社区,那就是Google Plus了.

    • Emacs牛人的博客
      最好的是Planet Emacsen,多个Emacs博客的集合.
    • Quora.com
      我偏心的是"列举最实用的命令"之类的详细问题.很是多回答大开眼界.即便我已精通Emacs.

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

      假设你的问题就是比較泛泛而谈的,从一个能測量水准的详细问题入手找到高手,而后看高手是怎样回答那些比較泛的问题的.

    • 在 twitter 上以 "emacs :en" 按期搜索
      twitter人多,更新结果快.

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

    • 在 stackoverflow 上搜索相关讨论
      google "emacs-related-keywords site:stackoverflow.com"

      我会按期搜索,同一帖子重复精读.因为讨论质量很是高.

    • 到 Youtube 上看 emacs 相关的视频
      好比,我就是看了 Google Tech Talks 上这个 Org-mode 做者的介绍 而爱上 org-mode.

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

1.4 读书最有效

  • 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"一章.

1.5 知识管理

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

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

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

因此决不要重置配置!

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

  • 配置归入 github 的版本号控制
    个人配置见 https://github.com/redguardtoo/emacs.d.

    版本号控制可以是以为一个集中式的知识管理,不论什么时刻不论什么地点对配置的改动都要及时上传合并 (merge).这点是积累能力的关键.

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

  • 将相关资料 (如电子图书,博客文章) 备份
    我将所有资讯都放在 dropbox 的server上,这样资料就同步到个人智能手机和个人平板电脑上,我可利用空暇时间学习.

    点击这里注冊 dropbox 账号.注意,dropbox client全然可以在国内使用,尽管訪问其首页可能有点问题.

    我还写了不少博客文章.这些文章都存在org格式的文件里.最后公布的静态博客也归入版本号控制,參见http://github.com/redguardtoo/blog.binchen.org.

1.6 第三方插件推荐

刚開始学习的人的问题是装了太多插件,管理成了问题.

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

标准例如如下:

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

所有插件均可经过包管理器下载.

下面是清单:

名称 说明 同类插件
Evil 将 Emacs 变为 vim 没有
Org org-mode,全能的 note 工具 没有
company-mode 本身主动完毕输入,支持各类语言和后端 auto-complete
expand-region 按快捷键选中当前文本,可以将选择区域扩展或者收缩 没有
smex 让输入 M-x command 变得飞快 没有
yasnippet 强大的文本模板输入工具 没有
flymake-xxxx 以 flymake 开头的所有包,针对不一样语言作语法检查 flycheck
helm 选择和本身主动完毕的框架,在其上有很是多插件完毕详细功能 ido
ido 和 helm 相似,我是 helm 和 ido 同一时候用 helm
js2-mode javascript 的 major-mode,自带 javascript 语法解释器 js-mode
w3m Emacs 的网络浏览器(需安装命令行工具w3m) Eww
elnode elisp 写的 Web server 不知道
smartparens 本身主动输入需要成对输入的字符如右括号之类的字符 autopair
window-numbering.el 跳转到不一样的子窗体 switch-window.el
web-mode 支持各类 HTML 文件 nxml-mode

1.7 Emacs 是一种生活方式

意思是说,牛人其它也很是牛.触类旁通你收获会很是多.

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

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

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

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

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

1.8 答疑

  • 我是绝对菜鸟,该怎么開始
    https://github.com/redguardtoo/emacs.d 參考"Install stable version in easiest way"一节.

    你仅仅要点击下载两个zip文件就可以了,不需要git的不论什么知识.

  • Steve Purcell 的配置是否有文档可以參考?
    除了 README 外没有,我主要是经过看 EmacsWiki 和源码来了解.窍门是源码文件的头部有使用指南.
  • 高手的配置是否过重量级?
    从性能和资源消耗的角度来说,高手的配置都是轻量级的.因为他们知道怎样优化.

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

  • 有没有更简单的配置?
    可用 个人配置
    • 去掉了Git依赖.
    • 网络也不是必须的
    • 已安装了拼音输入法
    • C++ 支持强大

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

  • 该使用Emacs的哪一个版本号
    眼下稳定版是Emacs 24.3.1,建议不要用高于此版本号的Emacs.一般不用操心版本号问题.主流的Linux发行版会处理.

    24.4尽管已公布,但还有些小问题,我建议再等半年左右.也也就是说,2015年下半年可以考虑升级.

  • 我已经是Vi高手,为何要转阵营?
    嘿嘿,我也是Vi精通后转到Emacs的.就是因为Emacs的强大(好比和 gdb 的完美结合)以及其脚本语言是Lisp.

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

    眼下我用Evil, 在Emacs下模拟Vim,结合二者长处.

    现在我是 神用编辑器之神!

    警告,Steve Purcell和我默认都启用了Vim的快捷键,不习惯可打开~/.emacs.d/init.el,将当中一行代码凝视掉,细节參考README.

  • 为何很是多Vim高手不能接受Evil?
    因为他们对Vim快捷键作了深度配置.Emacs默认要经常按Ctrl键,如本身定义的Vim快捷键也用Ctrl键,不免有冲突.

    解决的方法是你们都使Leader(Vim间建支持,Emacs需要安裝第三方插件).

    另外一个办法是呆在Vim的温馨区里.假设你能忍受没有org-mode和lisp的生活,那么不会有其它问题的.

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

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

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

    如必定要在用 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 是个开放平台,其众多插件 release 以前并不必定有严格的測试.因此插件之间可能有冲突.

    这也是我为何建议刚開始学习的人直接使用牛人配置的缘由,因为牛人已经攻克了众多兼容性的问题,你仅仅要直接享受他的服务便可了.

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

  • 我想用 Windows 版本号的 Emacs 而不是 Cygwin 版本号,怎么作?
    需对命令行操做熟悉.关键知识点有两个:
    1. 设置 HOME 环境变量,因为 .emacs.d 中的某些 elisp 脚本假定 .emacs.d 在 HOME 所指定的路径中.
    2. Emacs 的某些功能需要使用第三方的命令行工具,这些工具的路径应该加入至环境变量 PATH 中 (可选,缘由见后面).

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

    第三方命令行工具清单请參考个人.emacs.d 中的 README(Steve Purcell 没有列这些工具,因他仅仅用Mac).

  • 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 启动时从server (elpa) 安装第三方软件包 (package) 会失败?
    请启动 Emacs 后,执行 `M-x package-refresh-contents` 以从server更新软件索引,而后从新启动 Emacs 就能够.

    假设你没有使用 Emacs 24,并且没有全然拷贝高手的配置 (这是本文的中心思想),那么你需要安package.el,细节參考这里.

    Emacs 下载软件包 (package) 是经过 http 方式,因此假设网络出问题的话你需要用 http 代理server,详细操做见后文.

  • 有些站点 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前在其它编辑器上(如Sublime之类)已经是一览众山小了.他用Python拓展Sublime已熟到厌烦,Lisp的奇特语法反而刺激了兴趣.编辑器的常用术语也不在话下. 而本文针对的是大多数的凡人.

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

  • 掌握 Emacs Lisp 是不是成为高手的必要条件?
    否.但Lisp是很是强大的语言,特色是一切皆可改.当我说"一切"的时候,我就是指字面意义上的"一切",不是修辞上的夸张.

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

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

    顺便说一下,Lisp很是easy,比VBeasy多了,一旦你适应其语法,就会发觉它事实上对程序猿蛮友好的,至少少打很是多字.

  • 有必要学习键盘宏(Keyboard Macros)吗?
    不是必需,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软件
    • 文件管理: 用专用软件

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

1.9 联系我

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

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

我不会回答详细配置的问题.假设你通读本文,应知道哪里找答案更好.

1.10 结语

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

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

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

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

Emacs固然很是强大,可以做为一种另类娱乐来博眼球.但是它的本质是为专业人士使用的神器.

让我打个例如,职业杀手对于杀人的刀仅仅关心两件事:

  1. 高效地杀人
  2. 不论什么环境下均可靠

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

Emacs就是那把刀.

相关文章
相关标签/搜索