主页 > 香港六合开奖结果 > 118ki开奖现一年成为Emacs高手(像神一样使用编辑器)
118ki开奖现一年成为Emacs高手(像神一样使用编辑器)

  4887铁算盘一句诗解特如何插花篮,成为高手很容易.当初我在Vi阵营,偶尔用Emacs还忘记退出的快捷键,一年后我跨入高手行列.

  很多文章强调Emacs有多牛,但关于如何做则语焉不详.即使涉及到如何做,谈细节多而方法论少,所以本文就侧重方法论.

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

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

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

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

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

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

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

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

  何为软件自由没有比自由软件基金会更权威了.我建议把反复读,理解何为四大自由.

  例如,很多用户习惯让Emacs启动时自动从其官方插件仓库下载安装插件.当改网站偶尔下线或者公司的防火墙拦截了对外网站访问时,Emacs就会启动失败.

  这也就是一分钟可以解决的小事,如果你理解软件自由,有勇气到~/.emacs.d/elpa/目录下看一看的话。118ki开奖现

  一个插件仓库(repository)本质上就是一个文件夹,它有一个含有插件列表名为archive-contents的文本文件,以及一系列插件包.你完全可以把这些文件下载下来,在本地硬盘里建立ELPA的镜像.

  对个人来说,安装我写的插件elpa-mirror每年备份一下所有插件就足够了.

  所谓门户之见就是贴标签.我们的对应他们的.熟悉的对应陌生的,正统的对应异端的.

  避免门户之见的关键就是意识到标签只存在于你的主观想像中.真实世界不会因为你的想像而扭曲.

  当然思想的问题不是我空谈能解决的,关键是要实干.一个很好的治愈方法就是把上约4000篇文章通读一遍.大约需要8个小时左右.泛读就可以了.目的就是了解世界有多大.

  之前有读者反映我的方法类似于大学里写论文做研究,事实上这正是我的灵感来源.

  打好基础,让自己的知识面有足够的广度和适当的深度,对新手是最重要的.否则会在一些琐碎问题上浪费时间.

  比如新手的错误就是花大量的时间记快捷键,事实上网上教程列出的初学者必知快捷键都不是必需的.

  例如用Emacs开发C++最简单成熟的方案是使用GNU Global.配置Global必需要知道设置环境变量GTAGSLIBPATH.如果你连环境变量是什么都不知道,那么用Emacs开发C++也无从谈起.

  尽可能多的掌握其他Linux知识是很有用的,即使你只在Windows下使用Emacs.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  我偏爱的是列举最有用的命令之类的具体问题.很多回答大开眼界.即使我已精通Emacs.

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

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

  不过Youtube搜索结果是最佳匹配的.由于相关视频并不多,如按照默认算法,每次总是那几个.所以如果关注最新进展,搜索应以时间排序.

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

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

  正面例子参考Steve Purcell的配置. 2000年开始维护!其声誉和质量不用我多费口舌.

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

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

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

  请点击这里注册 dropbox 帐号.注意,dropbox 客户端完全可以在国内使用,虽然访问其首页可能有点问题.

  我还写了许多博客文章.这些文章都存在org格式的文件中.最后发布的静态博客也纳入版本控制,参见

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

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

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

  该教程大概需要半小时.关于Vim的基本操作的讨论就到此为止了.网上关于Vim教程汗牛充栋,你可以自行阅读.

  本文的重点是探讨如何结合Emacs和Vim获得完美文本编辑器,达到*神用编辑器之神*的境界.

  比如在操作自定义的Text Object时,当前焦点完全可以在Text Object之外.这是Lisp写的寻找附近的文件路径或者URL.用Vim Script写个类似的脚本难很多.即使你用了vim-textobj-user之类的插件辅助开发也没用的.

  而且Lisp代码完全可以调用*任何*的第三方插件或者Emacs的不计其数的API.比如Evil中操作Text Object的过程中我完全可以显示对话框问用户问题,访问几个网站等等.

  Vim自带Leader键的功能,你先按了Leader键(很多人定义为空格键)后,再按其他键(比如kk)会触发你自定义的命令.本质就是给你更多的快捷键.

  在Emacs中我们需要使用第三方插件如evil-leader来实现类似功能.

  某些Vim用户不能迁移到Evil的原因就是自定义了太多使用Ctrl键的快捷键,和Emacs默认的快捷键有冲突.

  这些用户没有意识到的是借鉴Emacs的思想,他们在Vim和Emacs的效率可以有巨大的提升. 我只提三点供参考:

  第一,典型Vim的用户的问题是没有充份利用Leader快捷键.我看过大多数Vim高手在GitHub上的设置,他们一般定义*10到20个左右*Leader相关的快捷键.

  第二,Vim用户的另一个问题是快捷键没有优化.最常用的快捷键应该最容易按.何为最常用快捷键必须来自*真实数据*.

  这是我用Emacs的插件keyfreq测试六个月后得到的部份数据 (我的Leader键定义为逗号):

  之前我提到了要保持头脑开放,要尽可能抄高手的代码,积极的报bug等观点.现在让我演示一下如何应用.

  我知道有很多人宣称,Evil和Emacs的许多插件有快捷键冲突,重新配置很麻烦.

  一开始我也相信了这些一派胡言,所以每装一个新的插件,都要辛辛苦苦再设置evil的快捷键.

  有一天我问自己,Lisp那么强大,Evil那么优秀,也许有更方便的简洁方案?许多人说不行不一定是真理,只有实际调查过的人才有发言权.

  我也没有自己钻研Evil的代码,取而代之的是给Evil的开发者Frank Fischer报了个bug,他给我了一个完美的方案,根本不需要重设快捷键.

  我就选择MELPA上最流行的5个插件简单介绍一下,类似的优秀插件还有很多.

  要点不在于你装了多少插件,而在于理解由于Lisp的强大和Emacs的自由,这些插件比Vim对应的插件功能更多,更容易拓展.

  由于Emacs的强大,默认就支持所有世界上已知的语言,而核心代码也就是1行而已.Vim插件对应的功能代码要有400行.

  如果你在org-mode格式的单一文件中中混杂多种语言的话,它也能智能识别.这个功能在Vim中基本不可能实现.

  本质就是你当前焦点在文件的某个位置A,你按%或者M-x evilmi-jump-items,焦点移到位置B,你再按同样的键,又回到了位置A.

  Vim对应的代码我读过,限制比较多,比如你一定要先定义一对正则表达式来匹配A和B的位置.这种限制在某些语言如Python中就会比较麻烦.

  Emacs的实现就完全体现了Emacs的自由精神,我建立了一个动态查询的矩阵,矩阵的元素就是函数对象而已.用户可以在运行时替换这些函数对象,所以怎么跳转,跳到哪都是完全自由的.

  所以python的支持就毫无问题.想支持更多的语言或者对我的实现不满意,在.emacs中写几行Lisp代码就可以了.

  按自定义快捷键退出当前的各种状态,相当于Vim中的ESC或者Emacs中的C-g.

  Sublime Text默认的文本搜索要比我的Emacs设置慢40倍.如果Sublime Text搜索需要我等待40秒,那么节省按取消键的0.5秒就毫无意义.

  我只需要1秒完成搜索,所以把取消操操作从0.5秒减少到0.1秒的感觉就完全不一样.

  当我们在Emacs中运行Shell的时候,命令和代码往往是从别的地方拷贝过来的.

  粘贴命令和代码到Shell中,分析/过滤/搜索输出的结果,都是Vim的快捷键更方便.

  你可以按C-z切换纯Emacs快捷键.我从不切换,因为我对这种杂交的快捷键非常满意.

  对Vim用户来说,Evil不仅提供了Vim的完美模拟,还开辟了用Lisp拓展Vim的新世界.

  对Emacs用户来说,Evil也不仅仅是提供了新的快捷键,而是提供了更多的可编程的数据结构和范式(如text object).

  关键是发挥你的创造力,自由地接合Emacs和Vim的长处,发明新技术和新技巧.这种机会目前是很多的,赶快行动起来吧.

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

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

  注意,Purcell作为顶尖Web开发者,会试用最新的Web技术,而我的配置Web类插件更新会滞后一段时间.另外我的工具链和Purcell不完全一致.你自己权衡了.

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

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

  因为他们对Vim快捷键做了深度配置.Emacs默认要经常按Ctrl键,如自定义的Vim快捷键也用Ctrl键,难免有冲突.

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

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

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

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

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

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

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

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

  如排除了以上原因,带上debug-init参数重新启动,然后将错误信息及环境报告到对应的开发者.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  Emacs 下载软件包 (package) 是通过 http 方式,所以如果网络出问题的话你需要用 http 代理服务器,具体操作见后文.

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

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

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

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

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

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

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

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

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

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

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

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

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

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