编辑器圣战之Emacs篇
Posted 点融黑帮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编辑器圣战之Emacs篇相关的知识,希望对你有一定的参考价值。
导语:
Emacs是一款使用elisp开发、支持键绑定的、看起来很像编辑器的编辑器,大多数人会把Emacs和VIM归为一类编辑器。在Emacs诞生的40年来,产生了N多分支,通常我们讲的Emacs指的是GUN Emacs。
1Editor VS IDE
关于这个话题是一场持久的圣战...在大多数程序员当中,用Editor的鄙视用IDE的,用IDE的鄙视用Editor的...(为什么计算机界存在这么多的鄙视链...)本文的立场是,看应用场景,迫于无奈可以两者都用嘛,毕竟都是工具...我自己最早是用VIM的...上大学的时候用VIM写了好多php。之所以使用VIM是因为当时看了一个大哥用VIM写代码的视频...全程高能,嘴巴大张,帅尿了...半年前决定入手Emacs,当时完全是为了折腾才开始玩的Emacs,确实花了一段时间来学习Emacs以及lisp,现在看来花的时间也不是那么多,而且有望终身受用,最重要的是Emacs很好用。
拿Emacs和VIM做比较的话,我认为VIM的编辑能力是要强于Emacs的,但是用VIM要频繁的按ESC颇为蛋疼,换按键也不舒服。而Emacs配置更容易一些,插件的安装也十分方便,更重要的是你有机会写lisp呢。比较头大的就是Emacs的快捷键太多了,而且会冲突,但不是不能解决。
Emacs本身的功能不仅限于编辑,由于强大的扩展性,使得Emacs可以无限的、横向的、纵向的任性扩展。你可以通过编写自己的配置文件来配置你的专属Emacs。另外,像Emacs和VIM这类键绑定编辑器,使得你在Emacs或VIM区域内的任何操作都可以使用键盘完成,键盘党必备,鼠标去死吧。诚然,这有一定的学习曲线,但绝对不至于难以掌握,一旦掌握,乐趣无穷。Editor最大的优点是,当你开始使用一种新语言或是一种新框架开始编程之旅时,你可以十分简单的加载相关的plugin来帮助你开发。如果之前是用IDE的话,很可能你需要找一款新的IDE~ 不要说Emacs可能也不会支持新语言或新框架,相信我,如果这个新技术有需要在Emacs中配置plugin,在这个新技术的网站中一定有支持相关plugin下载的页面。为什么?因为这些新技术的开发者大多数也是在用Emacs、VIM或其他编辑器开发的。结论:很多时候,你只需要一个编辑器,而不是一堆IDE。
从另一角度看,Emacs最大缺点在于,作为一个Editor,太不守本分了...Linus说“Emacs is evil.”(但那时候他自己也是在用一款Emacs的分支——MicroEMACS)Emacs从功能上讲已经远远超越编辑器,他更像是操作系统...你可以在Emacs上查收邮件,听歌、看视频、浏览网页...
IDE无疑功能更加复杂,但是对于IDE上一排一排的功能,很多功能可能你一辈子都不会用到。IDE更强调navigation,这一点上编辑器可能永远都不会超越IDE。如果你是在写Java,对于navigation的需求远远大于edit,所以还是继续用intellij或eclipse吧,编辑器无法满足这类语言的需求。但是你要是写写c、js、python、ruby、go啥的,拥抱Emacs吧,绝对是不二之选哦。写这些语言的话,能在IDE使用的功能,在Emacs上基本上都有现成的插件支持。许多人质疑编辑器不能debug、不能方便的跳入方法声明的文件、不能有效的自动补全。但当你使用intellij、eclipse或是vs的时候,你有没有想过这些IDE是如何实现debug、如何实现快速跳入声明方法的文件、以及如何准确无误的自动补全?虽然说拿IDE最大的优势跟编辑器作比较有耍流氓的嫌疑。但是这些通用功能在编辑器上都有现成的解决方案。最重要的是,这些解决方案都是开源的,大家一起将这些一开始不完善的解决方案一点一点的纠正,让其变得完善起来。开源是永恒的!实在不行,你也可以造轮子嘛~
另外,在linux的terminal中,默认就是使用Emacs风格的快捷键。(当然也可以设置成VIM风格的快捷键)比如,跳到行首是ctrl-a,跳到行尾是ctrl-e,搜索历史命令是ctrl-r,前进是ctrl-f、后退是ctrl-b、ctrl-k用来删除从光标到行尾、alt-f是向前移动一个单词、alt-b是向后移动一个单词。是不是很惊讶!
2如何开始Emacs之旅?
首先强烈建议通读官方文档,理解Emacs的结构组成,以及常用的快捷键。最重要的是如何配置和安装插件。对于elisp语言的要求极低,能看懂就可以了,配置文件中会用到。如果对Emacs还提不起兴趣,想要一睹Emacs的风采,可以在youtube上搜索org-mode,保证有料哦。
3如何配置一套前端开发环境
首先我的需求是这样的:
1、漂亮的颜色主题(颜控!)
2、项目中文件跳转
3、方便的目录结构树
4、我需要支持html、CSS、JS的语法高亮和缩进,这是最基本的。高级一点的需要Jade、LESS高亮。再高级点需要支持语法检查
5、js代码自动补全功能
前三条是适用于任何环境的,一劳永逸!
开搞之前,首先配置melpa package
这是一个官方的第三方依赖管理库。我们今后用到的库可以在Emacs中通过访问melpa直接下载。
(when (>= emacs-major-version 24)
(require 'package)
(add-to-list
'package-archives
'("melpa" . "http://melpa.org/packages/")
t)
(package-initialize))
以后访问melpa只需要通过alt+x 输入package-list-packages,然后搜索你所需要的插件就好了。
1、推荐安装color-theme和zenburn。color-theme是一个主题插件,zenburn是一个我很喜欢的主题配色。
2、projectile跳入对应文件。projectile的原理是扫描项目中的gitinfo,支持几个git项目间来回跳转,以及通过搜索文件名迅速跳入文件。
3、neotree是一款用来展示树形结构的插件。类似于VIM下面的nerdtree。
4、推荐web-beautify,支持HTML、CSS、javascript、JSON语法高亮以及自动排版。还需配合js2-mode增强javascript自身的语法解析。安装jade-mode用于jade语法高亮,安装less-mode用于LESS语法高亮。
5、在Emacs下有一款通用的代码补全插件,叫auto-complete。auto-complete支持N多语言的自动补全,以及上下文自动补全。javascript自动补全可以通过tern实现。tern是一个node server,专门用来做javascript解析器。所以首先需要安装node环境。在Emacs中安装tern-mode。tern-mode可通过配置来自动补全node、jquery、angularjs等等。具体使用和更多功能请参照ternjs官方文档。
另外可以根据个人喜好,安装如auto-pair、yasnippet这类通用插件。新手不必上来就搞一大坨插件,够用就可以,总结一下需求,通用的功能其实不多,装几个大伙极力推荐的就好了。
友情提示,无论是Editor还是IDE都是工具,能提高效率就好,切勿沉迷与偏执。
以上是关于编辑器圣战之Emacs篇的主要内容,如果未能解决你的问题,请参考以下文章