zoukankan      html  css  js  c++  java
  • 一年成为Emacs高手(像神一样使用编辑器)

    作者:陈斌(redguardtoo)

    版本:20141202

    更新时间: 2014-12-02 Tue

    原创时间: 2012-01-31 Tue

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

    1 简单介绍

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

    非常多文章强调Emacs有多牛,但关于"怎样做"则语焉不详,即使涉及到"怎样做",谈细节多而方法论少,所以本文就側重方法论.

    全文结构例如以下:

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

    2 为什么用Emacs(可选)

    简单谈谈,因重点是"怎么做",不是"为什么".

    2.1 真正精通后Emacs,其它编辑器自然精通

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

    比方一个内嵌的插件管理器是最主要的.

    例如以下载了第三方插件,假设发觉其有问题,能够在不碰该插件原始代码的情况下修复.

    插件server关闭了,应能够在自带的U盘上高速建立镜像.

    眼下流行的编辑器如Sublime Text还做不到以上几点.

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

    Emacs 用 Lisp 开发,Lisp 不同平常的语法决定了其开发人员都是资深开发人员,掌握了多门语言.

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

    2.3 和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).

    2.4 Emacs会永存

    个人开发人员会丧失兴趣,公司会倒闭.但自由软件基金会将一直存在下去.Emacs 作为其招牌软件也会维护下去,我的投资永不会贬值.

    2.5 使用 Emacs 能够立马開始工作.

    软件开源,配置是纯文本,且资源消耗小,安装包非常小 (命令行版本号 30M 左右),不论什么环境下都可用.

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

    2.6 一年指的是一年中的空暇时间

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

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

    2.7 态度决定一切

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

    新手的问题是,開始就 盲目 设定了入门必知.有些必知还非常费时间.

    以我为例,

    3 详细步骤

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

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

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

    建议,

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

    这个阶段的目的是:

    • 理解Emacs可爱之处
    • 知道Emacs怎样和其它软件交互

    3.2 读官方教程

    打开 Emacs 后,同一时候按下 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", 查看快捷键的文档

    3.3 以实际问题作为切入点

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

    在不论什么领域要成为高手,兴趣是最重要的.

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

    反面样例是非常多人以啃Lisp教程開始他们的Emacs之旅,坚持下来的人寥寥无几.

    3.4 待解决的问题设定优先度

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

    以这个问题作为出发点,除此之外都能够妥协.

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

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

    当初仅仅在终端下使用Emacs是由于需连接到远程server.我觉得这是重点.甚至为此放弃了美丽的配色主题(后来发觉此牺牲毫无必要).

    塞翁失马,由此也避免了图形界面版本号的全部问题.

    3.5 站在巨人的肩膀上

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

    这是浪费时间!

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

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

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

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

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

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

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

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

    3.6 报bug

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

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

    不要有报bug低级的想法.非常多高手都是乐于且善于报bug.到是菜鸟喜欢又一次发明轮子.

    帮助高手,你的起点就高,还有得到指点的优点.

    3.7 持续改进

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

    然后找出还有一点高手须要改善的地方,使用相同的方法.

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

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

    3.8 增加社区更上一层楼

    最重要的是专一.

    比如,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搜索结果是最佳匹配的.因为相关视频并不多,如依照默认算法,每次总是那几个.所以假设关注最新进展,搜索应以时间排序.

    4 读书最有效

    4.1 EmacsWiki

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

    有人抱怨文档太乱,质量參差不齐.前者我有同感.后者不赞同.EmacsWiki文档质量相当高,因其是 唯一的 半官方文档.耐心忍受其乱中有序的现状吧.

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

    4.2 Emacs Lisp 书籍推荐(可选)

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

    生动,样例丰富.作者用心安排了书的结构.比如,非常早就介绍了defadvice的使用方法.defadvice 是Emacs Lisp的精华.

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

    4.3 Steve Yegge的Emacs Lisp教程

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

    5 知识管理

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

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

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

    所以决不要重置配置!

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

    5.1 配置纳入 github 的版本号控制

    我的配置见 https://github.com/redguardtoo/emacs.d.

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

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

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

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

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

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

    6 第三方插件推荐

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

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

    标准例如以下:

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

    全部插件都可通过包管理器下载.

    下面是清单:

    名称 说明 同类插件
    Evil 将 Emacs 变为 vi viper
    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, html-mode

    7 Emacs 是一种生活方式

    意思是说,牛人其它也非常牛.举一反三你收获会非常多.

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

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

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

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

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

    8 答疑

    8.1 我是绝对菜鸟,该怎么開始

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

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

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

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

    8.3 有没有更简单的配置?

    那你可用 我的配置

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

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

    8.4 该使用Emacs的哪个版本号

    眼下最新稳定版是Emacs 24.3.1,建议不要用高于此版本号的Emacs.通常不用操心版本号问题.主流的Linux发行版会处理.

    8.5 我已是Vi高手,为什么要转阵营?

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

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

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

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

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

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

    !

    默认快捷键经过几十年考验,相当高效,未成为高手前还是用默认快捷键.

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

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

    不是必需记,我也仅仅记经常使用的十几个快捷键.顺其自然,多用自然记住,不用就忘掉,非常正常.

    眼下非常多高手在用 Smex,可飞快输入命令,快捷键实际上不须要了.

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

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

    比如,有人向我反映,在编辑不论什么文本的时候,会发觉右边约第 80 列处总有一竖线,希望能去掉.这实际上是一特性,提醒用户每一行宽度不要超过第80列.这是 每行不要超过 80 列的原因.

    我建议你第一年的原则应 尽量理解而不妄加推断.

    8.9 已下载更新软件包,可是没有不论什么作用,也没有不论什么错误信息

    删除 home 文件夹下的 .emacs、~/.emacs.d/init.el 就是代替原来的 .emacs.

    8.10 不论什么关于怎样配置的问题

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

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

    8.11 使用牛人配置后启动报错,怎样解决?

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

    如排除了以上原因,带上"–debug-init"參数又一次启动,然后将错误信息及环境报告到相应的开发人员.

    报告时应给出细节.比如非常多读者给我的bug都是因为第三方插件版本号较新引起的,我拿到版本号号后,才干下载特定版本号已重现 bug.否则仅仅能靠猜,来回邮件浪费非常多时间.

    8.12 牛人的配置太复杂,不易掌控,还是从一简单的配置改起好控制

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

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

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

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

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

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

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

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

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

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

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

    替代步骤2的更好方法是用第三方插件将 Windows 版本号的 Emacs 和 Cygwin 的工具完美结合,參考 我 (redguardtoo) 在 stackoverflow 上的回答.只是需很多其它配置.

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

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

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

    这个差距说究竟是后端语法解析引擎的问题.通常这个问题都是以微软的Visual Studio和IBM的Eclipse作參照.

    就C++来说眼下实用苹果公司的 clang 的方案,效果不错.Java实用 eclipse 做为后端引擎的方案.详细用什么插件来调用这些引擎有非常多选择,不展开了.

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

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

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

    就前端界面来说,做的比較好的是company-mode,维护非常活跃,你可就特定语言怎样配置咨询其开发人员.

    8.16 网页浏览

    强烈建议用Keysnail.

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

    8.17 邮件

    我用Gnus. 可是有非常多其它方案.

    如你必须訪问Microsoft Exchange Servers, 用Davmail.

    用了Davmail后, 还能够用Popfile 来分捡邮件. Davmail+Popfile让我生活在天堂,假设你在那种每天要收到几百电邮的公司工作,你就懂我的意思了.

    8.18 为什么 Emacs 启动时从server (elpa) 安装第三方软件包 (package) 会失败?

    请启动 Emacs 后,执行 `M-x package-refresh-contents` 以从server更新软件索引,然后重新启动 Emacs 就可以.

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

    Emacs 下载软件包 (package) 是通过 http 方式,所以假设网络出问题的话你须要用 http 代理server,详细操作见后文.

    8.19 有些站点 Emacs 訪问不了 (原因你懂得)

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

    比如,

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

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

    那么就仅仅能使用我的Emacs配置.

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

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

    否,仅仅会起阻碍作用!

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

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

    所以在软件使用没有相当基础前学习其拓展语言是浪费时间.

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

    有世界级高手(名字不点了)对我的建议不以为然,他说Lisp非常强大非常有趣,应该先学.

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

    选择适合自己的路,一年以后天才也好,凡人也好, 达到的高度都是一样的.

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

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

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

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

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

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

    不是必需,Lisp足够了.

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

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

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

    举一些我自己的样例说明:

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

    8.25 怎样学习org-mode?

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

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

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

    我赞赏这个理念.可是不要走火入魔.Emacs本质是个平台,提供了无限可能性.

    从有用角度讲,Emacs和其它工具结合有时能更快完毕工作(只是在没有一年的修炼之前 千万不要猜Emacs不能做什么).

    下面是Emacs不一定能吃独食的地方:

    • 剪贴簿: 应结合命令行工具xsel(Linux)/pbpaste(OSX)/putclip(Cygwin)
    • Web浏览: 最好用Firefox结合插件如keysnail
    • 远程登录管理: 最好用screen/tmux
    • FTP: 最好用专门的FTP软件
    • 文件管理: 用专用软件

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

    9 联系我

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

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

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

    10 结语

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

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

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

    非常多人之所以不赞同我的核心观点,是由于内心深处还有把Emacs当玩具用来炫耀"我有多酷"的意识.

    Emacs当然非常强大,能够作为一种另类娱乐来博眼球.可是它的本质是为专业人士使用的神器.

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

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

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

    Emacs就是那把刀.

    10.1 怎样报bug

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

    如有不论什么疑问,请在以上网址报bug.这比Email快.因GitHub会以邮件通知我,GitHub邮件永远归类至我的最优先目录下.

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

    10.2 不要复制粘帖本文

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

    假设你拷贝粘帖全文,会使自己和他人错过更新.

    我建议分享本文的链接,

  • 相关阅读:
    (11)模糊图片操作---均值模糊
    (10)绘制形状和文字
    (9)调整图像的亮度和对比度
    (8)图像混合
    (7)opencv图片内部的基本处理
    C#中的线程池使用(二)
    C#中的线程池使用(一)
    C#中线程的委托
    为PyCharm自动配置作者信息
    为PyCharm配置QT
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4191458.html
Copyright © 2011-2022 走看看