有趣的emacs

  学习emacs已经两个星期,一些基本的操作已经学会了。接下来要学习的是怎样去制作emacs的插件,以及了解其运行机制。刚开始,我是下载了大牛的配置,玩了半天,发现了emacs的有趣之处; 后来想让emacs完全贴近自己的生活,加一些插件; 可是在大牛的基础上进行更改,总是会出现错误。于是我就把所有的东西进行推倒了从来,凡是大牛配置里面的特性,我都在网上搜索,根据自己需求东凑西凑的整合起来,同时加入自己所需要的,就这样做成了适合自己的emacs。

1 常用插件

 

1.1 ido

  ido主要是增强C-x键的, 能够以正则表达式的方式迅速帮你匹配到你要打开的目标,并且提供选择项。我为了打开init-custome.el, 以下是C-x C-f的展示:

Figure 1: ido的效果

1.2 smex

  smex主要增强M-x键的,能够以正则表达式匹配的方式迅速帮你找到所需的命令,并且提供选择项。我为了用cnblog-get-post获取博客,以下是M-x的展示:

Figure 2: smex的效果

1.3 session

  session插件用来显示最近打开的文件。这是编辑器所拥有的功能。C-x C-b,在buffer列表里面选择所有打开的buffer(buffer即emacs里面的窗口)。其实单一窗口编辑起来更加爽一些,多窗口反而把编辑窗口的空间越挤越小。编辑器的tab是用来切换窗口,比较适合鼠标。我更加喜欢利用buffer列表来切换窗口。

1.4 color-theme

  color-theme是emacs的主题插件,我比较喜欢的主题是calmforest。每个编辑器都有很多主题的。emacs的主题有几十多种,是我见过主题最多的编辑器。我曾经配置过eclipse的颜色,那时我彻底被打败了,发现很难,字体、背景、高亮协调很困难。在主题上面,windows下的notepad++,以及跨平台的SublimeText是做的比较好的。

2 org-mode插件

  我现在写blog就是用org-mode插件,等会儿我要用cnblog插件将我的博客发布到博客园上去。org-mode的格式比较简单,标题的级数是多少,就用多少颗星表示; 至于行间距,字体大小之类的繁杂的东西,全部由org-mode自己帮我们去调整,特别养眼。我觉得用鼠标拖动的效果不是很精准,用一些符号去设置我们的格式,插入到文档里面,那时更加精确,更加优美的。虽然org-mode算不上专业的文字编辑工具(大家可以了解一下Latex这个专业工具,emacs也有它的插件)。我觉得处理一些日常的已经的用处了。而且org-mode是可以画出流程图,todo列表的,以及思维导图的。一下是我编辑我的blog时的情景:

Figure 3: org-mode的效果

3 evernote插件

  evernote是很优秀的在线笔记。evernote并没有提供linux版本的,现在在linux上可以使用的方式有如下:浏览器的插件形式(始终是基于浏览器,没有客户端用的爽); nixnote(第三方的linux软件,用户体验太糟糕); Wine虚拟Evernote(始终和linux融合的不够)。 现在emacs提供了evernote的插件。emacs将笔记编辑出来,通过命令将evernote上传到云端。这个插件有个缺陷就是不提供本地缓存,如果网速糟糕也是很纠结的。evernote-mode是XHTML格式,需要用w3m(emacs的文本浏览器)才能打开。

4 graphviz插件

  graphviz 软件是一个dot语言的解析器,dot语言能够将脚本转化为图片。用dot来画流程图挺方便。之前我设计过linux下的共享内存容器(https://github.com/CharellKing/TimePass),为了验证自己设计的容器是正确,通过程序打印是很难做到的,特别是一些很复杂的数据结构(例如红黑树);我通过程序将数据结构转化为dot脚本,然后通过dot将脚本转化为图片。

Figure 4: dot的效果

5 cc-mode插件

  cc-mode支持很多语言,C/C++ Java, Object-C, CORBAR, AWK, Pike等等。本人是C/C++开发着,也就配置C/C++的开发环境。仅仅有cc-mode还不够,最多也就支持C/C++的高亮。还需要设置自动完成。在网上搜了很多资料,cedet, ecb, cscope,这三剑客可以实现C++的代码自动完成、工程管理、代码阅读。由于emacs已经集成了cedet,集成的太鸡肋了,而自己用独立的包又产生冲突; 所以也就另寻其他的方法就用clang-mode以及completion-mode来实现自动完成。completion-mode是在输入时将匹配出的单词作为选择提供给编辑者; 而clang-mode是关联GCC库,对类、结构体的提供成员的提示(就是.、->的时候会有函数提示的)。自动完成是解决了,我并不喜欢多窗口,自己写程序一般都是自己写cmake来管理工程,所以就不用ecb了。代码阅读,函数的跳转用cscope,可以凑合着用,不过与eclipse和VS相比还是差的比较远(在linux上阅读代码可以用scitool understand,跨平台工具); 之前想用gtags,效果不理想,也不知道是不是自己不会弄,所以放弃了。

6 总结

  emacs可以根据自己生活方式来配置,一万个人有一种方式的emacs生活方式。emacs的设计是插件模式的,这也是软件设计的精髓。emacs不仅仅只有这些,要变成NB的emacser,需要走很远的路。

posted @ 2014-03-12 23:10  CharellkingQu  阅读(1286)  评论(0编辑  收藏  举报