编辑器圣战之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篇


从另一角度看,Emacs最大缺点在于,作为一个Editor,太不守本分了...Linus说“Emacs is evil.”(但那时候他自己也是在用一款Emacs的分支——MicroEMACS)Emacs从功能上讲已经远远超越编辑器,他更像是操作系统...你可以在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官方文档。


编辑器圣战之Emacs篇


另外可以根据个人喜好,安装如auto-pair、yasnippet这类通用插件。新手不必上来就搞一大坨插件,够用就可以,总结一下需求,通用的功能其实不多,装几个大伙极力推荐的就好了。


友情提示,无论是Editor还是IDE都是工具,能提高效率就好,切勿沉迷与偏执。








以上是关于编辑器圣战之Emacs篇的主要内容,如果未能解决你的问题,请参考以下文章

永无止境的圣战-Emacs vs Vim丨与神有关的编辑器

Emacs 学习之旅

钗黛双收:若你也同Vim难割舍,却又看Emacs情切切

[神器] Emacs 神之编辑器使用入门

学习神之编辑器 Emacs

最全Pycharm教程(42)——Pycharm扩展功能之Emacs外部编辑器