安卓手机上的Emacs
2019-02-15
周溱
我上个月的博客有一篇关于 Emacs, 有一篇关于 Android手机. 自然而然,会有人希望在手机上运行 Emacs, 是不是? 我当时以为不行,但其实我错了。Emacs 可以在 Android 手机上运行,而且不是 ssh 到远程主机上,不是什么简化版,不是什么仿真器,而是真的 Emacs 直接运行在 Android 系统上,包括一切你在电脑上的 Emacs 所拥有的高级功能,例如 org-mode, magit, eww 等。Emacs 在手机上不打折!
Termux 终端
我说过,有没有字符界面是真电脑和假电脑的根本区别.我之前介绍过 ConnectBot,是手机上的全功能 ssh/telnet/local 终端仿真器。但手机上本地应用时各种字符界面工具不够,所以通常我只用它 ssh 到远端。下面介绍的这个应用叫 Termux,是完全针对手机本地使用的终端仿真器。它的软键盘扩展类似 ConnectBot, 但真正把 Termux 和其他终端仿真器区别开的是相当丰富的网上应用库,直接用大家熟悉的Debian系的 apt 工具可以访问! 换句话说,这是安卓上的 cygwin, 而且比 windows下的 cygwin 更好用。刚安装上app的时候它仅是一个极简系统,但我们可以:
$ apt install make git perl emacs
然后不到200MB流量之后,这些基础软件就安装到你的手机里了。Termux 本身可以从 google play 或 f-droid 安装,而且无需 root 你的手机。如果有一天你不想用它了,卸载 app 就会把 Termux 以及你通过 apt 安装的所有软件,以及你用这个环境产生的所有文件一起清除,不留痕迹,安全环保。
CPAN 及其他
当然,Termux 毕竟不是一个完全的 Linux Distribution,各种软件总会有些缺失。但它有 gcc 和基础库,实在不行可以自己编译。但在此之前你还有相对简单的方法安装软件。假如你所需要的软件是 perl 写的,你可以用 CPAN 来下载安装。我用 cpan 安装了 template toolkit 和 ack, 都是比较复杂的 perl 软件包,都能顺利安装成功测试通过。当然,也不仅限于 perl 和 cpan, python 上也有类似的软件发布平台 pip, ruby 和 node.js 也有类似的基础设施,这些平台都能在 Termux 上找的到,有点遗憾的是 Haskell 平台暂时还没有。CPAN 证明了一点,有了 Termux, 安卓已经是一个真的通用操作系统了。
Emacs
Termux 已经包含 emacs 26,相当新了。其中,org-mode 和大多数你用的到的 emacs 组件都已经自带,另外,和 perl, python, ruby 等一样,emacs其实也是个编程语言以及应用发布平台。通过 emacs 自带的 melpa 平台,我们可以很轻易安装其他附加软件包,例如常用的 markdown-mode 和我之前介绍过的magit (git 前端)。安装了几个包之后,这个手机上的 emacs 已经达到了和我工作电脑上完全一致的功能。你目前看到的这份博客其实是完全在手机版 emacs 上写作完成的。而且,当你有了真的 emacs 和 git 之后,其实我上个月介绍的几个安卓应用,例如 syncorg, mgit 等对我也基本失去了意义,何必不用全功能并且和电脑一致的软件呢?
用途
让我再分析一下在手机上安装命令行环境,emacs 及其附加软件的意义。它带给我们很多功能,但不是所有功能都很有意义。比如,如果我愿意的话,我其实可以在手机 emacs 上读写邮件,但这恐怕不能给我带来什么价值,毕竟手机环境下有更好用的邮件客户端。在手机上用 emacs 和 git 的真正价值在于它提供了一个分布式的写作平台,而且手机环境和电脑环境完全保持一致,让我能无缝地在电脑和手机之间切换,当没有电脑或使用电脑不方便的时候可以继续写下去,而不是仅仅刷屏微信什么的。相比之下,wiki 不好用,Google doc 不能离线,用邮件把 word 文档传来传去? 还不如把我杀了。
总结
文字界面的历史超过我的年纪。很多人认为,文字界面不方便,不人性化,在1984年第一代 Mac 诞生的时候,苹果为了标榜革命,甚至完全去除了它的文字界面。但十几年后,Mac OSX 又加上了标准的文字界面,承认了当年的错误。Emacs 在我心中是文字界面的终极大 BOSS, 通过对文字的极致处理,衍生出种种周边功能,从而俯瞰其他编辑器。在智能手机成为现代人身体的一部分的今天,在 Termux 的帮助下,手机终于打通了关,见到了 BOSS. BOSS 其实从来未变,他一直在这里等待。