Emacs新应用

Emacs作为一个面向程序员的编辑器,已是久负盛名。但正如巴塞罗那不仅是一家俱乐部,微信不仅是一个通信工具,Emacs也不仅是一个编辑器,而其实是一个应用平台,有着丰富的第三方应用。下面我介绍一下最近几年比较热门的一些应用。

浏览器EWW

EWW
EWW

用emacs浏览网页可能是疯了。要知道浏览器是目前最复杂的客户端应用,连微软都搞不定,emacs在一个文字界面上能搞出什么名堂? 说老实话,我个人经常在文字界面上使用浏览器,主要是阅读一些API文档,或者程序自动生成的html报告日志什么的。在这些情况下,可以在文字界面下快速浏览是一件很有意义的事情:这时候也不需要JavaScript或图片什么的,要的就是能快速打开,搜索和跳转。我曾经用过lynx和w3m, 在emacs内也曾用过其他方案,都比不上w3m好用.但是,emacs里最新的浏览器组件EWW在速度和兼容性上已经达到或超过了w3m的水平,而且在emacs内部可以借助其强大的文字表现和搜索功能,完美的实现了有限的文字html浏览。大家不妨一试。

邮件客户端mu4e

mu4e
mu4e

Emacs可以读邮件至少有二十多年的历史了。mu4e已经是我自己用过的第四种emacs内置邮件客户端,但在前三次尝试中,我最后总是回到mutt。题外话夸一下mutt, 和它的前身pine一起,真的是历史上最杰出的文字界面邮件客户端,可以轻松应对每天几百封邮件狂轰滥炸.但我用过mu4e之后,已经渐渐不再使用mutt了.为什么?

  • mu4e 在基础邮件客户端功能上已经很逼近mutt了
  • mu4e 使用了和 EWW 一样的 emacs 内建 shr 引擎来表现 html 邮件,渲染速度超越了 mutt + w3m
  • mu4e 是完全基于搜索的,类似 gmail, 或命令行下的 notmuch. 比起常规邮件客户端它更适合当今海量邮件的现状.
  • 最后,mu4e 和其他邮件客户端做到了完美共生.不管文字界面多出色,你总会需要用到图形界面客户端,webmail和手机客户端的,对不对?

git客户端magit

magit
magit

现在所有程序员都要用git. 但我之前有一点小小的偏见,认为各种封装后的 git 客户端都是给菜鸟用的,是阉割版,傻瓜版,用了跌份,直到 magit 扭转了我的偏见.其实 magit 也不是第一种 emacs 下的集成 git 客户端,但之前的种种源于更早的 RCS/CVS 系统界面的改造,用起来总是感觉怪怪的,而 magit 应该是第一种完完全全为 git 开发的 emacs 客户端,不仅适合菜鸟,也适合进阶用户:

  • magit 和emacs内其他组件,例如ediff完美结合,提供更方便一致的用户界面
  • magit 提供可探索的用户界面,老git用户例如我,甚至学到了以前不知道的窍门
  • magit 并不屏蔽原生git命令界面,你能清楚知道它要做什么,做了什么,也不会久而久之不会用git命令行了

org-mode

把 org-mode 放在这里我其实有点犹豫.一是因为 org-mode 历史长的多,十几年了,另一个原因是很难定义 org-mode 究竟是什么.但如果不讲 org-mode 又感觉对不住大家,毕竟这是 emacs 近10年最牛的应用,没有之一.从某个角度来讲,org-mode是 emacs 里的 emacs, 它什么都能做,还可以进一步扩展.它可以用来写文档,写程序,做项目规划,做展示胶片,做电子表格,做网站,还有手机客户端.下面我从几个方面简述一下:

个人项目管理

org-mode
org-mode

这是 org-mode 的初衷,stay organized. 用 org-mode 你可以记笔记,列待处理事项, 生成日程表,让你在千头万绪的日常工作生活中不会迷失线索,忘记事情.尤其是对于我这种已经整天对着 emacs 看的,又容易忘事情的人特别有用,相当于一个高效的数字助理在你的指尖.

结构写作

由于 org-mode 的强大功能和文字表现能力,很多人也把它当作通用写作平台.你可以把它理解成 word + excel + powerpoint: org-mode 能让你做结构性写作和表格演算,并通过 html 或 latex 后端生成专业级别输出.坦率地说我自己其实还没有习惯这么做,个人还是偏好于使用 markdown + pandoc 来做这类事情.

文学编程

英文原文是 Literate Programming, 我可能翻译的不好.这个概念是把注释嵌在代码里这种常见编程模式反过来,把代码片段嵌套在文档之中,运用 org-mode 强大的结构写作功能和可扩展的后处理能力,实现一套源文件,一边生成专业级文档,一边生成程序.目前看来在学术界或数据分析行业用的比较多,我暂时还没有这方面需求.

总结

我一开始说过,Emacs其实是一个应用平台.在 http://www.melpa.org 上目前列了4051个安装包, 全都可以在emacs内部一键式安装.当然,大多数应用不独特,也比不上其他平台上的类似应用.但是,这些应用中不乏亮点,除了我列出来的这几个之外,还有不少等待我去发掘.应该说,这是一个相当成熟健康的生态系统.Emacs在快40岁的年纪仍然生机勃勃,这是自由软件才能创造的奇迹.

Vi is like masturbation: It is not as good as the alternative but is always there. -- Annonymous commentor