个人Emacs折腾经验谈(一) 一些给新人的建议

这几天都没有动力写mongodb的东西,我果真仍是太懒了么~ 主要是没有一个系统的东西整理出来,加上我使人拙计的语言表达能力,这个坑只能慢慢再补了.git

最近在折腾emacs这个东西,首先说我曾经算是个极为坚决的VIM党,我在各类IDE里面基本都会要装VIM化的插件,并且个人浏览器Firefox一直有Vimperator这个插件,如今上网若是不能用d关网页/用t开tab就会以为难受.那么我为啥还要搞emacs呢?并且眼看着sublime一每天变得流行起来,而emacs基本没什么新人在用,我为啥又在这个时候折腾emacs呢?github

理由其实也不是很充分,可是对我而言已经够了:mongodb

  1. Emacs是用Lisp的最经典的程序了,做为试图成为Lisper的人,emacs最起码应该使用过.君不见github上最流行的lisp方言就是emacs lisp(虽然绝大部分repo都是你们把各自的emacs配置放上去了而已)
  2. Emacs是Hacker的选择,首先开发者RMS神不用说了(若是不知道这位的话建议不要用Emacs来进行工做,我如今以为Emacs也确实是不太适合大众用的东西,只适合对于文本编辑效率极高的人群,最典型的就是码农),其次大量知名人士使用 著名Emacs用户列表 ,虽然说并非别人用什么你就改用什么,但至少你能肯定这不是一个糟糕的选择.
  3. 最近写clojure,对于括号的操做很重要,而paredit让写lisp轻松了一些.
  4. 本人相对来讲仍是不是特别怕折腾的

(附Richard Matthew Stallman照片一张)ubuntu

那么就开始折腾吧,以前对于emacs的复杂程度内心有所准备,因此知道这东西不会像sublime同样开箱就能用,果真第一个遇到的问题就是:怎么打开文件啊?vim

先镇定,我以前用vim的时候就是各类操做不会,都只能找菜单,这里同样先找菜单再说,而后发现选了打开文件之后是要输文件路径的(囧).估计光是这一点就足够赶走无数的用户,真是用户交互设计的一大败笔,不过emacs这东西就不是给普通用户设计的,只有接受它的设定,才能达到咱们的目标:提升效率.浏览器

接下来学习的过程就再也不叙述了,总之就是先Ctrl+h t看完了教程先,教程是英语的可是很好懂.而后就是一边开着手册一边试着编辑文件了.就和学习一门新语言同样,不断的写程序是最快能学会的方法.学习

 

别人的Emac是这样的

别人的emacs是这样的                                                         个人emacs是这样的网站

 

防治小拇指抽搐

学习的历程仍是很漫长的,尤为是在Vim的肌肉记忆深深植根大脑的时候,使人愤怒的是你会发现Emacs的键位比较奇葩,不是很好按,不像Vim有模式能够不用修饰键,Emacs里面须要大量的Ctrl Shift Alt等等,这就大大加深了小拇指的负担.有人建议装脚踏板给Ctrl和Alt,我以为这方案还挺好的,惋惜这需求过小众,万能的淘宝都找不到合适的踏板,有一种可是看上去不给力且价格不理想.ui

我这里建议把Capslock键改了,我以前使用Vim的时候是Capslock和ESC交换,如今则是Capslock直接改为Ctrl,由于capslock实在没有什么用.这样的话开vim的时候注意 Ctrl+[ 是和ESC起同样的做用的,这样就能够同时让Emac和Vim的按键都舒服许多.在Mac上还有点优点就是不须要装额外的软件就能够把键给改了.spa

站在巨人的肩膀上

既然emacs是是众所周知的难于配置,天然有拯救苍生的各位大大想让更多的菜鸟能用上神器.因而乎出现了很多文章帮助菜鸟度过难关,其实只要常常搜一下就会找到他们的博客,例如emacs中文网,李杀网等不少地方.另外还有些大大分享了他们的配置文件供咱们上手快一些,我这里用的是emacs-starter-kit, 注意它的做者是leiningen的做者,很是值得借鉴.Emacs-starter-kit的github页面上有关于如何使用的说明.没有它的话天知道又有多少人会把光阴白白送在一些很是基础的设置之中了.

Package.el

之前的Emacs的插件管理方式很是的原始,都是直接把插件的el文件放在.emac.d文件夹下,并不区分插件和配置文件,这对于插件的管理/升级/卸载都十分的不便,后来就有了package.el插件来帮助设置插件.最后Emacs的做者们终于在Emacs的24版中内置了插件管理,为咱们省却了不少功夫.在安装emacs-starter-kit的时候指南上就介绍咱们要在init.el中写

1 (require 'package)
2 (add-to-list 'package-archives
3              '("marmalade" . "http://marmalade-repo.org/packages/") t)
4 (package-initialize)

这里第一行是说加载package.el这个包,2~3行说为package.el中加入marmalade的源来获取包,第4行是初始化包.刚开始的时候不须要明白到底这些都是啥.只要不要随便就删掉它们就行了.

这些代码算是设置好了软件源,就跟咱们在ubuntu上设apt-get的源同样.可是我在尝试sr-speedbar这个包的时候发现安装时会出一些问题,没有办法装上去,在github上找到了sr-speedbar的代码,发现因为兼容性问题在最近的2013年才被修正过,而marmalade上的版本是2009年的,就是说若是用marmalade的话就没有办法正确安装,我如今暂时还不会hack package中的代码(况且这样就失去了package打包安装的意义),尝试了一下byte-recompile等指令发现仍是不太会,在即将放弃这个插件之际想到,若是有别的源说不定已经更新了,由此在emacs wiki上又找到了下面的配置

1 (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
2                          ("marmalade" . "http://marmalade-repo.org/packages/")
3                          ("melpa" . "http://melpa.milkbox.net/packages/")))

用上面这3行取代前面的2~3行代码就能够了,其实意思就是将melpa这个源加入package的软件源而已.

加入Melpa这个源之后,运行list-packages这个指令时会发现显著变慢了,而后能够看到不少版本号都变成了日期,同时后面会有[github]等字样,这是什么意思呢?上melpa这个网站能够看到,它的原理和marmalade是不一样的,它基于版本控制系统自动生成package,就是说只要做者将代码更新了commit之后,melpa就会更新,不须要再等做者打包放到marmalade上面,并且若是原做者早就忘了更新这个事的话还有其余人帮忙更新代码,这样显然是更好的方式,sr-speedbar就是这样作的.

因此固然当即将melpa加入->更新->搞定!

如今emacs依然有不少人在为其开发插件,能够说其文件编辑功能依然是领先的.只是有很多老的插件没有为新版作更新,也须要整个社区的努力.

 

就写这么多吧,一次写太多下次都不知道写啥了,我就一个初学者,下回就从头写写最基础的东西吧,若是你以为翻manual和wiki看英语太难受的话不妨看下个人翻译.下回更新又不知何年何月了.

相关文章
相关标签/搜索