做者:陈斌(redguardtoo)javascript
版本:20140914html
更新时间: 前端
原创时间: java
版权:本文採用下面协议进行受权,自由转载 - 非商用 - 非衍生 - 保持署名 | Creative Commons BY-NC-ND 3.0,转载请注明做者及出处.node
成为 Emacs 高手很是easy.一年前我还在 Vi 阵营,偶尔用 Emacs 还忘记"退出"的快捷键,但一年后我跨入高手行列.git
很是多文章都是强调 Emacs 有多牛,以激发你的兴趣.最有名的大概是王垠的Emacs 是一种信仰!世界最强编辑器介绍.github
但关于"怎样作"则语焉不详,即便涉及到"怎样作",谈细节多而方法论少,因此本文就是側重方法论.web
全文结构例如如下:算法
简单谈谈,因为我本文的重点是"怎么作",而不是"为何".编程
一旦你尝过最好的,你天然了解好的编辑器应该有哪些功能.
比方一个内嵌的插件管理器是最主要的.
又比方下载了第三方插件,假设发觉其有问题,可以在不碰该插件原始代码的状况下修复.
假设下载第三方插件的server的关闭了,应该可以在自带的U盘上高速创建镜像server.
眼下最流行的编辑器如Sublime Text还作不到以上几点.
Emacs 用 Lisp 开发,Lisp 的不一样日常的语法决定了其开发人员都是资深开发人员,掌握了多门语言.
Emacs 自己并不能给你带来不论什么优势,这就决定了其社区成员都是纯粹的技术人员,投机取巧的功利主义者对其是没有兴趣.
这里的不少其它并不是和 IDE 比支持某编程语言的特性不少其它,而是指 Emacs 内可完毕的通用任务比較多, 而且更快捷.
好比,我作开发时碰到难题,需要实时上 IRC 请教国外高手 (工做流包含粘贴个人代码到 pastebin 或者 gist,在 irc 内提问,看网页,将解决方式粘贴回来),Emacs 集成了 IRC 工具和浏览器 (w3m),操做就很是方便.
我使用 Visual Studio 多年了,Firefox 使用我也是高手,相信我,大多数状况下仍是 Emacs 更快.
固然口说无凭,请看下面高手操做的 youtube 视频, Emacs Power: Can your editor do THIS!
顺便说一下,很是多刚開始学习的人关心的代码本身主动完毕,我可以说除了Java之外的几门主流语言,支持都很是不错了.
我的会丧失开发软件的兴趣,公司会倒闭而中止维护软件.但是自由软件基金会会一直存在下去.Emacs 做为其招牌软件也会一直维护下去,我在其上投资永远不会贬值.
软件是开源的,配置是纯文本,而且软件的资源消耗较小,安装包很是小 (命令行版本号的安装包 30M 左右),因此在不论什么环境下我都可以用 Emacs 開始工做.
这在大项目中特别明显,好比,某项目我需要同一时候编辑 perl、java、C、bash、SQL,需要远程编辑在美国server上的代码,网速也快.Emacs 的优点就体现出来了.
我没说一年内必须什么事都不干专门学 Emacs, 没有短时间利益回报的悬梁刺股式学习方法是我最反对的.
以我为例,天天八小时上班时间中有很是多零碎时间可以利用,上下班通勤时间有一个小时可以利用.
长期来讲你能取得的成就是由态度决定的.
优秀人士的特色:
好比,尽管 Emacs 默认的快捷键已很是高效,但是我更新了个人快捷键操做.保存文件时我原来要按按 "Ctrl+X Ctrl+S",现在按 ",ww".少按了一个键,同一时候手指避免了额外移动一寸去按 Ctrl 键.
这彷佛是个微小的修改,因为保存文件并不是一个很是频繁的动做.而且放弃熟悉的快捷键操做,使用一个陌生的快捷键開始也有点不习惯 (后文我提到,我也是一个熟练的 Vim 用户,但是 Vim 的保存快捷键默认是 ":w",并不是现在的键位).
但是这仅仅是我改进效率的一个开端,我花了几个月时间把所有的操做都以相似的方法优化了一边. 而后我又想到了进一步的优化应该有可靠的统计数据为基础,因此我安装了名为keyfreq 的 Emacs 插件,对于我使用最频繁的操做又一次分配了最方便的快捷键.
若是我一開始因为已习惯了 Vim 或者 Emacs 默认的快捷键,或因为改进保存文件动做的效率提高过小,因此拒绝改变,那么就不会有后来的大规模优化键位的project.
或者有人说输入代码效率仅仅是软件开发流程中很是小一部分,重要的是 "XXXX(编程思想,架构,框架…)".此所谓顾左右而言它.假设你能触类旁通,天然可以猜到相同的方法和原则也适用于软件开发的不论什么一部分," 但是…" 仅仅是不作的借口罢了.
Emacs本质上是给geek(热爱技术,追求高效的人)使用的软件.因此使用它需要一点点Linux的基本知识.假设你没有这方面的经验,那么下一节"无Linux经验新手高速指南"就是为你准备的.不然可跳过.
步骤的要点在于起点要高,照抄高手的配置,尽可能理解高手的配置,不要改动,除非你要给高手报bug.
熟悉配置后应增长社区,使用高手开发的插件,培养品味.到达必定的程度后要回报社区,多作測试,多报bug.
下面是个人建议:
实际上我在后文已经把这个怎样入手的问题说得很是清楚了.
比方我后文谈到,我就是从org-mode入手的,又谈到你应跟着高手学习而不要本身瞎摸索.假设能触类旁通,你应想到假设你不肯定从何处着手,那么跟着我作(用org-mode)应该是不会错的.
打开 Emacs 后,同一时候按下 Alt 和 X 健,输入 help-with-tutorial(后文中,相似快捷键以简写 `M-x help-with-tutorial` 取代),回车.
仅需半小时.关于 Emacs 的多难学的谬论可以休矣,因为半小时的代价微不足道.想一想你去年有多少小时白白虚度了吧.
这步是必须的,不要跳过!
好比,很是多人的问题是不知道怎样查看变量函数的文档,这在官方教程中都有说明.
因为假设微小的努力能获得巨大的回报,你就会越学越有乐趣,进入一个感情上的正反馈.
长期来讲,在不论什么领域要成为高手,兴趣是最重要的.
以我为例,我急需 GTD 的工具,而 Emacs 的 org-mode 是世界上最好的 GTD 工具 (没有之中的一个). 用 org-mode 大大节省了时间后,我对于 Emacs 爱屋及乌,兴趣高涨了 100 倍.
让我再举个反面的样例说明,Emacs的email软件Gnus尽管某些特定功能强大(比方高速插入邮件附件,生成HTML表格),但是由于很是长时间没有更新,其UI已至关落后于时代,对于通常用户来讲其UI及其费解.
我知道有资深的10年经验的Emacs用户也认为Gnus太难用.
即便你终于学会了Gnus,能作的事也和Gmail的Web版本号有差距(比方搜索邮件,附件预览),而且Linux下也有不少同类软件.这就是典型的投资极大,回报很是小.
因此对新手来讲,从Gnus入手Emacs是很是成问题的.
这方面我是个负面模范.一開始我仍是抱着玩的心态,喜欢处处找有趣的配置粘贴到个人 .emacs 中去.
这是浪费时间!
我应该一開始就照抄 世界级大师 Steve Purcell 的Emacs 配置.
警告,Purcell 总爱试用最新的 Web 开发的新技术,对他而言稳定性不是第一位的,假设你有足够的热情和能力,愿意和他一块儿折腾,那么你的 Emacs 水平会提升得很是快
这个假设是很是重要的前提,当我上了 Purcell 的贼船时,我已有 10 年开发经验,精通多种开发语言.
假设你不肯意过于折腾,那么你至少不要反复个人错误,你不要质疑,你不要创新,你要跟着高手作.比方 Eric Schulte 的 Emacs-starter-kit 很是适合刚開始学习的人.Bozhidar Batsov 的配置 也不错 (不必定适合刚開始学习的人).也可以用个人配置.
直说了把,你是刚開始学习的人,開始阶段应以学习模仿为主.这点怎么强调也只是分!
为了加深印象,让我再举一个样例.一些读者向我反映,Emacs 快捷键太多,背起来压力很是大.实际上这是刚開始学习的人先入为主的偏见.对高手来讲,有了恰当的工具后,快捷键很是多状况下并不需要.盲目地去背快捷键仅仅会延迟你成为高手那一刻的到来.假设你仅仅是复制了高手的配置開始使用而不是纠结于完毕背快捷键这个无聊的任务,你会发觉高手已安装了名为 smex 的插件,使得你直接输入命令比用快捷键还快.因此背快捷键也不需要了.
这是本文最核心的观点, 假设你尚未信服的话,请再考虑一下个人理由:
要像武侠小说里那样拜高手为师简直是白日作梦.惟一能让高手指点你的办法是先付出.最可靠的付出就是给高手报bug.
我就是这样学到一些高级Lisp编程技巧的.
不要有报告bug是低级活的想法.我看到很是多高手都是乐于而且善于报告bug的.到是很是多菜鸟喜欢又一次发明轮子胜于帮助别人改善轮子.
帮助高手,你的起点就高,还有获得高手指点的优势.
前提是起点要高,要在高手已有的工做上继续改善.即便是微小的改善,假设坚持一段时间,就是巨大的进步了,而后你可以在这一点上笑傲江湖.
而后找出还有一点高手需要改善的地方,使用相同的方法.
好比,默认的Emacs移动子窗体焦点不是很是方便.你需要按"C-x O"屡次.我找到了emacs插件switch-window,仅仅要按"C-x O"一次,会有提示子窗体编号,接下来仅仅要输入子窗体编号就可以了.但是仍是有改善空间,我又找到了window-number.el,仅仅要按"M-NUM"就可以了.
window-number.el已很是完美,但是我又想到了Alt键仍是有点慢,我结合evil和evil-leader,我可以按逗号和数字就可以切换子窗体了.
假设要充分利用社区,最重要的是专注.
好比在Quora.com上有很是多有趣的话题.我会节制本身的兴趣,不去定阅和Emacs无关的话题.
Google Plus 的 Emacs 社区 在此时Geek 的气场很强,讨论的贴子质量很高.我上过许多大众和小众的 Emacs 社区,这是个人经验之谈.好比,我增长了 Linkedin 和 Facebook 的 Emacs 社区,眼下都退出了.并不是这些社区不够专业,仅仅是 Google Plus 讨论问题的技术层次比較高.
假设你仅仅能增长一个网络社区的话,那么就是 Google Plus 了.
GitHub 的版本号控制服务很是好.现在它的社区化倾向愈来愈强了,我喜欢.
好比,可以看一下 https://github.com/search?p=1&q=stars%3A%3E20+extension%3Ael+language%3Aelisp&ref=searchresults&type=Repositories 上最酷的 Emacs 插件.
最好的是Planet Emacsen,多个Emacs博客的集合.
我偏心的是"列举Emacs中最实用的命令"之类的详细问题.很是多回答拓宽了个人眼界.即便我已至关精通Emacs.
那种"怎样掌握Emacs"的问题,人人都能插上一脚.即便有些高水平的的回答,也淹没在众多平凡的回答中.
即便你的问题是比較泛泛而谈的,从一个能够測量的水准的详细问题入手找到高手,而后看高手是怎样回答那些比較泛泛而谈的问题的.
twitter 人多,更新结果快.之因此加上":en"是因为有很是多日文内容,我不懂日文.
google "emacs-related-keywords site:stackoverflow.com"
我会按期搜索,相同的帖子重复精读.因为 stackoverflow 上的讨论质量很是高.
好比,我就是看了 Google Tech Talks 上这个 Org-mode 做者的介绍 而爱上 org-mode.
注意,Youtube 搜索的结果是最佳匹配的.问题是关于 Emacs 的视频并不太多,假设依照 Youtube 的算法,我每次搜索看到的老是那几个录像.因此假设关注重点是看看 Emacs 社区有些什么新东西的话,默认搜索结果应以时间排序.
EmacsWiki 是一个社区维护的 Emacs 文档,可以以为是最酷插件和最佳实践的集合点.
有人抱怨EmacsWiki文档太乱了,质量也參差不齐.对于前者我也有同感.对于后者我不赞同.EmacsWiki的文档质量至关高,因其是惟一由社区维护的半官方的文档.耐心忍受其乱中有序的现状吧.
读EmacsWiki的最佳方法是,选定一个特定主题,从头读到尾.这样你对特定主题的最新进展都了解了.是否要採用EmacsWiki的建议另当别论.
<Writing GNU Emacs Extensions by Bob Glickstein>是Elisp编程书籍中最好的.生动,样例丰富.做者明显是高手,并且用心安排了书的结构.好比,他很是早就介绍了 defadvice 的使用方法.我很是认同这点,defadvice 是 elisp 语言的精华.
Xah Lee 提供 付费 Emacs Lisp 教程 也至关不错.
他的Emergency Elisp很是不错,因为很是简洁.我特别喜欢"Statements"一章.
决不要低估长期的自我管理的累积效应.
我经常看到有人在网上悲伤地抱怨说因为重装电脑,几年积攒的emacs配置都丢失了.也有人自豪地宣称把本身的.emacs主动干掉,为的是弄一个组织的更好的配置.
你的技巧是成指数增加的,知识积累的越多,这些知识之间的联系就会越多.这些联系增加的速度是以指数的方式增加的.把你emacs配置从头来过,意味着你的积累的知识书面记录丢失了.损失是很是大的.
因此我建议决不要丢弃你的Emacs配置.
这也是后文我谈到的为何要用工具保存emacs配置和相关知识.
个人配置见 https://github.com/redguardtoo/emacs.d.
版本号控制可以是以为一个集中式的知识管理,不论什么时刻不论什么地点对 Emacs 配置的改动都要及时上传和合并 (merge).这点对于我的能力的长期积累很是重要.
共享Emacs实际也是一种利己的行为,有很是多人使用个人配置,等于帮我測试.
我将所有 Emacs 相关资讯都放在 dropbox 的server上,这样资料就同步到个人智能手机和个人平板电脑上,我可以充分利用空暇时间学习.
请 点击这里注冊 dropbox 账号.注意,dropbox client全然可以在国内使用,尽管訪问其首页可能有点问题.
我还写了不少博客文章.这些文章都存在org格式的文件里.最后公布的静态博客也归入版本号控制,參见http://github.com/redguardtoo/blog.binchen.org.
Emacs第三方插件很是多.刚開始学习的人的问题是装了太多插件,插件的管理成了问题.
我建议一開始选择插件的原则应该少而精,被最棒的插件培养出了品味后,可自由挑选适合的插件.
我推荐插件标准例如如下:
所有插件都可以经过Emacs的包管理器下载.
下面是插件清单:
名称 | 说明 | 同类插件 |
---|---|---|
evil | 将 Emacs 变为 vi | viper |
org | org-mode,全能的 note 工具 | 不知道 |
company-mode | 本身主动完毕输入,支持各类语言和后端 | cedet,auto-complete |
expand-region | 按快捷键选中当前文本,可以将选择区域扩展或者收缩 | 不知道 |
smex | 让输入 M-x command 变得飞快 | anything-complete |
yasnippet | 强大的文本模板输入工具 | 不知道 |
flymake-xxxx | 以 flymake 开头的所有包,针对不一样语言作语法检查 | flycheck |
helm | 选择和本身主动完毕的框架,在其上有很是多插件完毕详细功能 | ido |
ido | 和 helm 相似,我是 helm 和 ido 同一时候用 | helm |
js2-mode | javascript 的 major-mode,自带 javascript 语法解释器 | javascript-mode、js-mode、js3-mode |
w3m | Emacs 的网络浏览器(需安装命令行工具w3m) | 不知道 |
elnode | elisp 写的 Web server | 不知道 |
smartparens | 本身主动输入需要成对输入的字符如右括号之类的字符 | autopair |
window-numbering.el | 跳转到不一样的子窗体 | 不知道 |
web-mode | 支持各类 HTML 文件 | nxml-mode、nxhtml-mode、html-mode |
假设你照着我以上的作法作,就可以认识到 Emacs 牛人其它也很是牛.Emacs 实际上体现了牛人的一种生活方式.
好比,Sacha Chua 就是这样一个有牛人气质的女孩,这是她的Youtube 录像. 她学习 Emacs 的方式是让 Emacs 本身主动将手冊语音合成,这样她在房间里走来走去的时候也可以听文档了.
Emacs之因此强大是因为Emacs后面有不少牛人.
我认识到这一点后開始有意识的整理Emacs高手名单,观察高手是用什么工具的,这使我收益良多.
好比, js2-mode 的维护者Masafumi Oyamada(网名mooz)也开发了keysnail和percol. 特别使percol,使我命令行操做效率提升了10倍.
这个阶段可以称之为心中有剑,手中无剑.是否使用Emacs不重要了,我可以为所欲为使用合适的工具.好比,很是多人争论哪一个编辑器自带的文件管理较好.我从mooz那样的高手学到终级方案后,对这些争论就跳出五行外,不在三界中了.
除了 README 外没有,我主要是经过看 EmacsWiki 和源码来了解.一个窍门是一般主源码文件的头部有使用指南.
那么你可以用 个人配置:
注意,Purcell 是顶尖的 Web 开发人员,他会试用各类最新的 Web 开发技术,假设你用了个人配置,Web 开发插件更新会滞后一段时间.另外个人开发工具链和 Purcell 的不全然一致.你本身权衡了.
眼下的最新的稳定版是Emacs 24.3.1,建议不要有用高于这个版本号的Emacs.一般你不用操心版本号号的问题.主流的Linux发行版会帮你处理这个问题.
嘿嘿,我也是 Vi 精通后转到 Emacs 的.我转换阵营的缘由就是因为 Emacs 的强大 (好比和 gdb 的完美结合) 以及其脚本语言是 lisp.
固然 Vi 的多模式编辑和快捷键比 Emacs 要高效得多,因此最佳方案是 Vi 的快捷键加上 Emacs 的强大.
眼下我在用 evil-mode,在 Emacs 下模拟 Vim 操做,结合了二者的长处.简单地说,现在个人执行模式"神用编辑器之神 ".
警告,Steve Purcell 和我默认都启用了 Vim 的快捷键,假设你不习惯的话,可以打开 ~/.emacs.d/init.el,将当中对应的一行凝视掉,详细凝视哪一行请參考 README.
Emacs 的快捷键是通过几十年考验至关高效的,我建议你在未成为高手前仍是学习 Emacs 的默认快捷键.
假设必定要在 Emacs 下用 Windows 快捷键的,可以考虑 ergoemacs.
没有必要记快捷键,我也仅仅能记住常用的十几个快捷键.顺其天然,常用的命令你天然会记住快捷键,过一段时间不用了,又会忘掉,这很是正常.
眼下很是多高手在用 Smex,可以飞快输入命令,很是多快捷键实际上不需要了.
不要改! 參考上文 站在巨人的肩膀上 一章,你以为奇怪多是因为缺少经验,把某些特性误以为是 bug.请坚持至少一年.
好比,有人向我反映,在编辑不论什么文本的时候,会发觉右边约第 80 列处总有一竖线,但愿能去掉.这其实是一特性,提醒你每一行不要宽度不要超过第 80 列.这里是每行不要超过 80 列的缘由.
我建议你学习 Emacs 的第一年的原则应是,理解而不推断.
删除 home 文件夹下的 .emacs、~/.emacs.d/init.el 就是代替原来的 .emacs.
好比,问:在 .emacs.d 中的 init.el 文件起什么做用?答:google "emacswiki init.el".
首先确认你已装上了 你需要的 第三方命令行工具,这些工具是可选的,清单见 个人.emacs.d的README.
假设排除了以上缘由. 又一次启动 emacs,带上 "–debug-init" 參数,而后将显示的错误信息及环境报告到你所用的.emacs.d相应的开发人员# .
报告 bug 应该给出细节.好比很是多读者给个人 bug 都是由于第三方插件版本号较新引发的,我拿到版本号号后,才干下载特定版本号的插件以重现 bug.不然仅仅能靠猜,来回邮件会浪费读者很是多时间.
那么你就是走我懊悔莫及的老路,一我的在黑暗中摸索.开头兴致很是高,但现实是残酷的,碰到复杂问题解决不了.因而选择逃避,最好的借口是 Emacs 太复杂,放弃 Emacs.
我终于醒悟过来,走上了光明大道,很是多走上岐路的人恐怕就没有这个觉悟和毅力了.
但愿本身掌控坦率地说是一个非技术问题,因为没有自信心,因此有一种补偿内心. 但愿经过一种错误的方式来证实本身.结局无非是恶性循环.
正确地方法是放下身段至少一年 (我已重复强调这一点),打好基本功,读书,虚心地向高手学习.
让我举一个样例说明:有一个读者向我反映他用了 purcell 的配置,但是 Lisp 的环境花了三天时间也搞不定.尽管我对除 Elisp 之外的其它 Lisp 方言毫无经验,仍是花了 15 分钟帮他攻克了这个问题.解决方法很是easy,就是指定一下用哪一个 Lisp 解释器.
解决该问题需要的基本功很是easy:
Emacs 是个开放平台,其众多插件 release 以前并不必定有严格的測试.因此插件之间可能有冲突.
这也是我为何建议刚開始学习的人直接使用牛人配置的缘由,因为牛人已经攻克了众多兼容性的问题,你仅仅要直接享受他的服务便可了.
即便你发觉了牛人还没有来得及处理的 bug,最有效的方法是提交 bug 报告给牛人,而不是本身去钻研 elisp.
需要对主要的命令行操做有必定的熟悉.关键知识点有两个:
假设你不知道怎样在 Windows 下加入改动环境变量,不知道怎样安装第三方工具,建议仍是先用 cygwin 中的 Emacs,因为 cygwin 已自带某些工具,没有的话,安装也和方便.且在 cygwin 下环境变量 HOME 默认已有.
第三方命令行工具清单请參考上文 个人.emacs.d 中的 README(Steve Purcell 没有列出这些工具,因他仅仅用 OS X).
这个差距说到底是后端语法解析引擎的问题.坦率地说一般人们问我这个问题都是以微软的 Visual Studio 和 Eclipse 做为參照对象的.
就 C++ 来讲眼下有使用苹果公司的 clang 的方案,效果还不错.就 Java 来讲,有使用 eclipse 作为后端引擎的方案.详细使用什么 Emacs 插件来调用这些引擎有很是多选择,不展开了.
实战中,我一般就是使用 ctags 或者 etags 做为后端引擎,因其所有语言通吃. 尽管解析效果差一点,但是经过我遵循恰当的命名规范,对编程效率没有什么影响.
使用 ctags 或者 etags 还可以帮助菜鸟程序猿改掉一个很是严重的毛病.菜鸟因为缺少自信心和经验,因此变量和函数名的命名一般都过于通用,给本身是架构师在写一个大型的通用 Framework 的幻觉.这对于真实的产品研发来讲是一个很是严重的问题,想象你要改动某个接口的所有调用,定义,文档和測试案例,并且这个接口在多个语言中都有使用.这个接口假设有一个通用的名字如 list,是会把维护人员气死的 (我之前碰到过一朵奇葩,他还有喜把变量名和函数名叫全然同样名字的"好习惯 ").叫 ListMySpecificService 则好的多.使用 ctags/etags 这类比較弱的解析引擎就会逼你起一个不那么普通的名字.
假设ctags已不能知足你的需求,你可以考虑用cscope或者Gnu Global (gtags).
以上我讨论的都是后端引擎的问题.
就前端界面来讲,作的比較好的是company-mode,眼下维护也很是活跃,你可以就特定语言怎样配置company-mode咨询其开发人员.
请启动 Emacs 后,执行 `M-x package-refresh-contents` 以从server更新最新的软件索引,而后从新启动 Emacs 就能够.
假设你没有使用 Emacs 24,并且没有全然拷贝高手的配置 (这是本文的中心思想),那么你需要安装配置 package.el,细节请參考 这里.
Emacs 下载软件包 (package) 是经过 http 方式,因此假设网络出问题的话你需要用 http 代理server,详细操做见后文.
在命令行中启动 Emacs 时加上 "http_proxy=your-proxy-server-ip:port" 前缀.
好比,
http_proxy=http://127.0.0.1:8000 emacs -nw
那么就仅仅能使用个人Emacs配置.
和个人配置配套的是我创建的独立的第三方包服务,请參考其主页上的README设置.
否.但 Emacs Lisp 是很是强大的语言,其特色是一切皆可改动.当我说"一切"的时候,我就是指字面意义上的"一切",并不是修辞上的夸张.
我用过不少编辑器,除了 Emacs 外,没有一个能作到"一切均可改动"这点 .vi 也不行.
因此学点 Lisp 对于你提升 Emacs 的使用水平没什么坏处.另外 Lisp 是种不错的语言,假设你的职业是 IT 的话,Lisp 值得一学.
顺便说一下,Lisp 是种很是easy的学的语言,比 VB easy多了,一旦你适应其语法后,就会发觉它事实上对程序猿蛮友好的,至少少打很是多字.
否,仅仅会起阻碍做用!
Lisp语法和一般的编程语言有些不一样,除非有至关编程经验(至少10年),通常人刚開始都会对其有语法有一点点负面情绪(固然都是毫无道理的偏见).个人意见是学习不论什么新东西,长期来讲兴趣是最重要的.一開始就应该避免不论什么会消减兴趣的不论什么负面情绪.
Emacs Lisp又是一种仅仅用于Emacs的语言,有大量的Emacs相关的术语需要掌握.如"Buffer","Yank","font face",这些术语仅仅有在你成为有至关经验的Emacs使用者后才干理解.
因此在 Emacs 没有至关基础前学习 Emacs Lisp 是在浪费时间.
參考前文关于找到切入点的一节,我推荐的学习 Lisp 的顺序是,先使用优秀的 Emacs 配置享受到 Emacs 的优势,有了兴趣后学习 Emacs Lisp 就水到渠成了.
关键是你打算用 Emacs 这个强大的瑞士军刀作什么.
我在前文中已经强调过以兴趣和解决实际问题做为切入点.
再举一些我本身的样例说明:
Org-mode简明手冊 是不错的中文教程.
我以为最好的英文新手教程是Carsten Dominik(org-mode发明者)在google tech talks上的演讲.其要点为org-mode本质是一个文本文件,你仅仅要记住按TAB展开或者缩进条目就可以了.其它高级特性可以慢慢学.
我很是赞扬这个理念.但是不要走火入魔.Emacs本质是个平台,给Geek们提供了无限的可能性.
但是从有用角度讲,Emacs和其它工具结合有时候能更快完毕工做(只是菜鸟在没有一年的修炼以前千万不要猜Emacs*不能*作什么).
下面是我以为不必定Emacs能够吃独食的地方:
缘由多种多样,比方远程ssh登陆使用Emacs的话,Emacs默认假定你是不能訪问X clipboard的,但是这个假定现在不成立,假设你使用X11 forward over ssh技术(主流的Linuxserver默认都支持的),剪贴板是可以訪问的.
因此重点是保持头脑灵活,坚信Emacs无所不能的同一时候也要适当变通一下.
这是个人 twitter 和 google plus 以及 微博,也可以经过个人 email<chenbin DOT sh AT GMAIL DOT COM>联系我.我也在新浪 weibo.com 上开通帐号 emacsguru.
个人主力博客为 http://blog.binchen.org.
我不会回答 Emacs 配置的详细问题,因为假设你通读本文,应该知道哪里找答案更好.
在本文结束时,我再强调一下本文最重要的观点.
要点是:
关键是你以严肃的态度把其看成专业技能学习. 很是多人之因此不赞同个人核心观点多是因为在他们的心里深处仍是有把Emacs用来炫耀"我有多酷"的意识.
Emacs固然很是强大,可以做为一种另类娱乐工具来博得眼球.但是它的本质是为专业人士使用的神器.
让我打个例如,职业杀手对于杀人的刀仅仅关心两件事:
刀的装饰是否美丽或者用刀技巧是不是本身原创的对职业杀手并不重要.
Emacs就是那把刀.
本文已放在 GitHub 上,网址为 https://github.com/redguardtoo/mastering-emacs-in-one-year-guide.
假设有不论什么疑问,请在以上网址报 bug.这比 Email 要快.因GitHub会以邮件通知我,GitHub 邮件永远归类至个人最优先目录下.
假设直接给我发 Email,就会淹没于垃圾邮件中.
Emacs 本质上是一个社区和平台,不断有新的有趣的人和技术出现.我会按期更新本文.
假设你仅仅是拷贝粘帖全文,会使你本身和他人错过更新.
我建议你最好分享本文的连接,