Emacs中最能增加效率的那些插件
一年多以前, 我四处寻找各种插件想把Vim打造成一个全功能的IDE. 然而搞笑的是,那篇帖子下面许多评论都在说Emacs早已内置了这些插件,Emacs本身就已经是个很棒的IDE了. 然而,虽然我也认同Emacs 真的是具有无与伦比的可扩展性,但也并不能说不带任何第三方插件的Emacs就已经是一个完美的编辑器了. 好在Emacs的第三方插件也不少. Emacs支持的插件太多了,你可能都不知道怎么选择比较好. 本文我将列出一些使用Emacs必不可少的插件,借助这些插件将会极大的提高你的工作效率的. 虽然我比较关注于编程相关的效率,但这些插件对于其他工作也非常有用.
Ido-mode
对于初学者来说,这恐怕是最有用的插件了, Ido的意思是interactively do. 它能将大多数时候干巴巴的命令提示窗口转换为具有字符匹配功能的菜单. 举个例子,当尝试打开本地目录中的一个文件时,本来只会显示一个普通的命令提示符等待你输入文件名, 但在开启ido-mode后,随着你输入内容,Ido会帮助你匹配最合适的文件. 这样你很容易就能看到你的行为带来什么样的结果,而且还能很快的从多个具有相同前缀的文件中找出你所想要的那个文件.
Smex
这个插件不是特别的出名,但它是对Ido-mode的一个很好的补充: Smex是针对 ‘M-x’ 命令提示的一个很好的替代品. Smex的灵感来源于Ido-mode,因此它也为那些要输入的命令提供了类似Ido的交互式搜索功能. Smex简单而高效,可以为你节省很多时间.
Auto Complete
在知道有这个插件之前,我有一半的时间都浪费在通过按下 M-/ 来补全单词上了. 现在它会为我展示一个自动弹出菜单来供我选择要补全的内容.
关于这个插件我没什么好说的,我们都很需要它.
YASnippet
这个插件专用于开发人员. 总有一些代码是我们经常要用到的. 例如我就常常需要输入 var_dump(...); exit; 来调试PHP.
我一边又一边的输入这段代码,然后突然领悟到,我完全可以预先将这段代码保存成一个代码片段,然后在要用的时候,直接插入.
YASnippets可以让你很方便的导入代码片段文件,也可以让你很方便的创建自己的代码片段文件. 然后只需要按下一个快捷键就能将一个小段关键字扩展成一段预先写好的代码,并且可以很方便的修改这段代码.
Org-mode
不得不承认, 我是最近才开始使用Org-mode的. 但它对我来说早已是如雷贯耳. 我看到很多文章都在说:Org-mode可以改变你的生活. Org-mode的理念非常简单: 它被设计来简化记录流程同时使用纯文本格式来保存数据,这使得它可以很方便的在任务列表和各种数据之间导航,并且可以进行像根据优先级或预期时间进行过滤,设置重复任务等操作. 虽然理念很简单,但是你可以做的事情有很多,你很快就会被埋没在Org-mode所提供的那些选项中的. 我这里不打算写一个长长的教程教你怎么用Org-mode,我推荐你去阅读这些指南, 学习那些关于Org-mode的视频,亲自去体验一下Org-mode有多么牛逼.
Helm
有些人很喜欢它,有些人则不怎么对它感冒. 我属于后者. 但是既然那么多人喜欢它,那我们不可能不提它.
Helm旨在完全改变你的Emacs体验. 简单来说, Helm是一个框架用来帮助你快速查找文件或命令.
基于你输入的内容,Helm会使用单词补全的功能来引导你完成你想要的动作(Based on your input, it will try to use word completion to guide you to the action you have in mind).
一开始你可能会觉得不太习惯, 但对于某些人来说,Helm会变成他们宗教般的存在. 虽然我并不是狂热的Helm粉,但是我也确实觉得用 helm-occur 来在文档中搜索字符串真是太赞了–它会在另一个buffer中显示出所有的匹配行,而且让你可以很容易的导航到这些位置.
若你想快速了解下Helm的功能,可以看看这篇文章中的演示.
ace-jump-mode
还有一个插件也深受众人的喜爱,那就是ace-jump-mode. 我目前也正在学习使用这个mode. 掌握这个插件之后,你将完全不再需要用到鼠标了. 简单来说,触发ace-jump-mode后, 他会提示你输入一个字符. 所有以该字符开头的单词都会高亮起来并被分配一个唯一的字符作为索引. 按下索引字符后,光标就会跳到指定的单词位置了. 我必须承认,要养成使用它的习惯很难,但一旦你习惯了这种方式,它会极大的提高你移动的速度.
find-file-in-project
如果你很喜欢Sublime的模糊查找项目中文件的功能(只要按下 Ctrl-p 就行,很方便),那么你一定会爱上find-file-in-project (简称为ffip)的.
在设置好版本控制根目录后,它就会根据你输入的名称在你的代码库中快速扫描并找出匹配的文件.
我将它的快捷键设置为了 F6. 这个插件用起来很简单也很方便,尤其适用于你无法记住那些复杂的目录结构的时候.
Flymake
作为一名IDE热爱者, 我尤其喜欢它所提供的语法检测功能. 语法检测功能对于程序新手来说很有用,而且对于疲倦的程序员来说也很方便. 多亏了Flymake, Emacs用户也能享受到语法检测功能了. 我经常要写PHP代码,Flymake基本无需怎么配置就能工作的很好了. 当我书写代码时,Flymake会自动检测我的代码并且高亮那些有问题的行. 对于那些需要编译的语言,Flymake会搜索Makefile文件并使用它来检测你的代码. 真是太神奇了.
electric-pair
最后,我觉得electric-pair是一个简单而强力的插件. 它的功能仅仅是在你输入圆括号或者方括号的左括号部分时,自动帮你补上右括号部分. 这项功能看起来不怎么起眼,但是相信我,在经历无数次费力地寻找匹配的括号之后,你会很高兴有这么一个插件帮你保证所有的表达式的左右括号都是一致的.
总结来说,Emacs是一个很棒的工具. 试试这些插件然后看着你的工作效率突破天际吧. 这份列表当然还远远不够全面. 若你有什么想推荐的,请在下面留言. 我很喜欢体验新的插件.