如何成为Emacs高手,像神同样使用编辑器

Links:

Emacs  Org-mode  -> GTD 最强的任务管理利器

http://www.cnblogs.com/holbrook/archive/2012/04/14/2447754.htmljavascript

http://www.cnblogs.com/holbrook/archive/2012/04/17/2454619.htmlhtml

http://www.360doc.com/content/11/1107/18/7735641_162571835.shtmljava



初学者使用Emacs的难点  

做者: 陈斌(redguardtoo)node

原创时间: 2012-03-06 二git

Table of Contents

1 配置成神同样的编辑器要花不少时间

抄高手的配置,不要抱着玩玩的心态在低水平上创新.


Steve Purcell的配置 https://github.com/purcell/emacs.d
Matt Briggs的配置 https://github.com/mbriggs/.emacs.d
个人配置(抄Steve Purcell的,加中文和C++支持) https://github.com/redguardtoo/emacs.d

2 太难看

安装emacs24,而后看这:http://www.emacswiki.org/emacs/ColorTheme

3 记不住那么多命令,打字太烦

安装Smex,记住你最经常使用的命令,只要打命令中的关键字就能够匹配.使用Smex后我基本再也不设置快捷键.

4 没有非用不可的功能,总能找到替代品

Org Mode是很是优秀的软件,能够用来作笔记,作GTD,写文档.我没有找到替代品.

5 对Vi用户来讲快捷键陌生且低效

安装Evil,emacs版的vim(注意,不是vi),结合Vi的高效和Emacs的强大的编辑器,完美了.

6 对普通用户来讲快捷键陌生

试着适应吧,Emacs比Notepad出生的早,因此你不能怪Emacs.

7 Ctrl键太难按

交换Caps Lock和左Ctrl.

8 不知道怎么看帮助


快捷键 说明
C-h v 按变量名查找
C-h f 按函数名查找
C-h k 按快捷键查找

9 恩,有时候我要用代理(Emacs不少功能需网络)

在bash下:

export http_proxy=http://127.0.0.1:8000; emacs

使用socks server和tsocks:

tsocks emacs

    

如何成为Emacs高手,像神同样使用编辑器

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


做者:陈斌(redguardtoo)

版本号:20140329

更新时间: 2014-03-29 Sat

原创时间: 2012-01-31 Tue

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

1 注意

1.1 个人某些观点可能有争议

首先请考虑到我观点都是通过长期实践得出的,绝非拷贝自他人.

我相信本文的大部份都是没有争议的.

有争议的偏偏是我最具备原创性的观点.

个人观点是,彻底照抄顶尖高手如Steve Purcell的配置,尽可能避免研究本身如何配置Emacs,固然也尽量少写Elisp代码.

如下是个人理由:

  • 我文章的标题是 一年成为高手,不是一年入门.

  • 高手是世界级别的高手,不是关起门来一个特定小圈子内的高手

  • 我就是这么作的,你能够看看一年内我给他报了多少 bug.

  • 说究竟是态度问题,若是你真正下定决心了,考虑到Purcell的天赋和勤奋,追赶他的最好办法显然只有加入他.

  • 要超越世界级高手就必须了解高手的标杆在哪里,你须要一年的时间去模仿去学习.

  • 你基于Purcell的配置给他报bug(甚至是提交补丁),那你就是考虑到了他没有考虑到的问题,至少在这个问题上你就超过他了,日积月累成果就很可观了.

1.2 如何给我报告 bug

本文已放在 GitHub 上,网址为 https://github.com/redguardtoo/mastering-emacs-in-one-year-guide.

若是有任何疑问,请在以上网址给我报 bug.这比 Email 要快.由于你报的任何 bug 我都会自动收到 GitHub 的邮件通知,GitHub 的邮件永远会归类至个人最优先文件夹下.

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

1.3 我会长期维护本文

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

1.4 若是你想和我讨论本文

欢迎讨论,建议在 GitHub 上给我报告 bug.

1.5 不要复制粘帖本文

如前所述,我会长期维护本文,若是你只是拷贝粘帖全文,会使你本身和其余人错过最新更新.

若是您想分享本文,最好分享本文的连接,

2 简介

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

不少文章都是强调 Emacs 有多牛,以激发你的兴趣.最有名的大概是王垠Emacs 是一种信仰!世界最强编辑器介绍.

这些好文章让你激动,你所以定下一个伟大目标 (掌握神同样的编辑器 Emacs),接下来就是执行了 (如何高效地学习 Emacs).

网上关于"如何作"的文章很少,那些涉及到 "如何作" 的文章,涉及细节多而谈方法论少,因此本文的重点就是谈谈通常方法.

3 为何要用Emacs(可选)

简单谈谈,由于我本文的重点是"怎么作 ",而不是"为何 ".

3.1 Emacs 的特色决定了其社区的平均技术水准都不低

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

Emacs 自己并不能给你带来任何好处,这就决定了其社区成员都是纯粹的技术人员,投机取巧的功利主义者对其是没有兴趣.

3.2 和单纯的 IDE 比较,Emacs 能够作的更多更快

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

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

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

固然口说无凭,请看如下两段高手操做的 youtube 视频:

3.3 Emacs 是自由软件基金会开发的招牌开源软件

我的会丧失开发软件的兴趣,公司会倒闭而中止维护软件.可是自由软件基金会会一直存在下去.Emacs 做为其招牌软件也会一直维护下去,我在其上投资永远不会贬值.

3.4 使用 Emacs 能够马上开始工做.

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

这在大项目中特别明显,例如,某项目我须要同时编辑 perl、java、C、bash、SQL,须要远程编辑在美国服务器上的代码,网速也不是很快.Emacs 的优点就体现出来了.

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

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

我同意的方法是,开始阶段花极少的时间获得巨大的回报 (以下文谈到的 Org-mode),以兴趣作导向.

天天花多少时间取决于我的须要和如何管理,以我为例,天天八小时上班时间中有不少零碎时间能够利用,上下班通勤时间有一个小时能够利用.

3.6 态度决定一切

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

优秀人士的特色:

  1. 敢于接受新事物

  2. 追求更强的过程自己就是目的

  3. 触类旁通

例如,虽然 Emacs 默认的快捷键已很高效,可是我更新了个人快捷键操做.保存文件时我原来要按按 "Ctrl+X Ctrl+S",如今按 ",ww".少按了一个键,同时手指避免了额外移动一寸去按 Ctrl 键.

这彷佛是个微小的改动,由于保存文件并非一个很频繁的动做.并且放弃熟悉的快捷键操做,使用一个陌生的快捷键开始也有点不习惯 (后文我提到,我也是一个熟练的 Vim 用户,可是 Vim 的保存快捷键默认是 ":w",并非如今的键位).

可是这只是我改进效率的一个开端,我花了几个月时间把全部的操做都以相似的方法优化了一边. 而后我又想到了进一步的优化应该有可靠的统计数据为基础,因此我安装了名为keyfreq 的 Emacs 插件,对于我使用最频繁的操做从新分配了最方便的快捷键.

假设我一开始由于已习惯了 Vim 或者 Emacs 默认的快捷键,或由于改进保存文件动做的效率提高过小,因此拒绝改变,那么就不会有后来的大规模优化键位的工程.

或者有人说输入代码效率只是软件开发流程中很小一部分,重要的是 "XXXX(编程思想,架构,框架…)".此所谓顾左右而言它.若是你能触类旁通,天然能够猜到一样的方法和原则也适用于软件开发的任何一部分," 可是…" 只是不作的借口罢了.

4 读官方教程

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

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

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

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

5 以兴趣和急需解决的问题做为切入点

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

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

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

6 站在巨人的肩膀上

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

这是浪费时间!

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

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

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

若是你不肯意过于折腾,那么你至少不要重复个人错误,你不要质疑,你不要创新,你要跟着高手作.好比 Eric Schulte 的 Emacs-starter-kit 很适合初学者.Bozhidar Batsov 的配置 也不错 (不必定适合初学者).也能够用个人配置.

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

为了加深印象,让我再举一个例子.一些读者向我反映,Emacs 快捷键太多,背起来压力很大.实际上这是初学者先入为主的偏见.对高手来讲,有了恰当的工具后,快捷键不少状况下并不须要.盲目地去背快捷键只会延迟你成 为高手那一刻的到来.若是你只是复制了高手的配置开始使用而不是纠结于完成背快捷键这个无聊的任务,你会发觉高手以安装了名为 smex 的插件,使得你直接输入命令比用快捷键还快.因此背快捷键也不须要了.

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

7 高手都在哪里

7.1 加入 google plus 的 Emacs 社区

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

若是你只能加入一个网络社区的话,那么就是 Google Plus 了.

另外,著名 Emacs 用户 Xah Lee(我的网站为 李杀网,其帐号名为 ErgoEmacs) 每周二会在 Google Plus 上组织一次 Emacs 问答.

7.2 reddit 的 Emacs 社区质量也不错

reddit 上一些讨论挺有新意,深度上不及 Google+.

7.3 GitHub 是 geek 云集的地方

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

例如,能够看一下 https://github.com/search?p=1&q=stars%3A%3E20+extension%3Ael+language%3Aelisp&ref=searchresults&type=Repositories 上最酷的 Emacs 插件.

7.4 Emacs牛人的博客

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

7.5 Quora.com

我偏心的是"列举Emacs中最有用的命令"之类的问题.不少回答拓宽了个人眼界.即便我已至关精通Emacs.

8 搜索最新讯息

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

twitter 人多,更新结果快.

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

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

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

8.3 使用 google 快讯

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

8.4 到 Youtube 上看 emacs 相关的视频

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

注意,Youtube 搜索的结果是最佳匹配的.问题是关于 Emacs 的视频并不太多,若是按照 Youtube 的算法,我每次搜索看到的老是那几个录像.因此若是关注重点是看看 Emacs 社区有些什么新东西的话,默认搜索结果应以时间排序.

9 将 emacs 配置管理起来

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

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

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

10 将 emacs 相关资料 (如电子图书,博客文章) 管理起来

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

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

11 EmacsWiki

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

12 Emacs Lisp 书籍推荐(可选)

<Writing GNU Emacs Extensions by Bob Glickstein>是Elisp编程书籍中最好的.生动,例子丰富.做者明显是高手,而且用心安排了书的结构.例如,他很早就介绍了 defadvice 的用法.我很认同这点,dfadvice 是 elisp 语言的精华.

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

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

若是你照着我以上的作法作,就能够认识到 Emacs 牛人其余也很牛.Emacs 实际上体现了牛人的一种生活方式.

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

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

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

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

我既没有能力把一个编辑器设计成一我的工智能语言 Lisp 的平台,也不可能花 30 多年的时间对一个软件精益求精.

14 精品 Emacs 第三方插件推荐

我推荐插件标准以下:

  • 高品质

  • 常常更新

  • 功能强大

全部插件均可以经过 Emacs 的 package manager 下载.

如下是插件清单:


名称 说明 同类插件
evil 将 Emacs 变为 vi viper
org org-mode,全能的 note 工具 不知道
org2blog 给 wordpress 写博客 不知道
company-mode 自动完成输入,支持各类语言和后端 cedet,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 语法解释器 javascript-mode、js-mode、js3-mode
w3m Emacs 的网络浏览器(需安装命令行工具w3m) 不知道
elnode elisp 写的 Web 服务器 不知道
smartparens 自动输入须要成对输入的字符如右括号之类的字符 autopair
window-numbering.el 跳转到不一样的子窗口 不知道
web-mode 支持各类 HTML 文件 nxml-mode、nxhtml-mode、html-mode

15 小结

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

若是你想得到真才实学,想变得更强,变得更优秀,这就是惟一的方法,惟一的捷径.

这个方法不是我发明的,从古到今的杰出人士都是这么作的,若是你须要一点"更科学的"论证,请参考 一万小时天才理论.

相关文章
相关标签/搜索