重启 Emacs 配置

昨天晚上,我想尝试一下在 Eamcs 里面运行 notmuch,结果不行的是发生了错误提示。我不知道该怎么做了,只好先把 mu4e 的配置给注释掉,doom sync 后重启 Emacs,然后错误依旧;然后我注释掉 notmuch,重新还原 mu4e,结果还是不行了。这事我一筹莫展了。正好,近期看到一个系列视频,名为 Using Emacs,看到里面讲的这位老师的 Emacs 是用的自己的配置,是属于 Emacs Starter Kit 的风格,使用了 Org Bable,不过简单很多。这个系列的视频不是从启动、退出、移动光标开始讲,假设观众有了基础的 Emacs 知识,然后讲解如何从头开始配置一套 Emacs 配置,而且涵盖了非常多方面的内容,但又不过分沉重,感觉很适合我的需求。我心想这大概是个不错的机会,来尝试一下自己配置一个现代的 Emacs。所以我把之前 Doom Emacs 的配置文件换了个位置,然后从零开始了一个新的配置。

到目前为止,我看到了第 20 集,讲的是 yanking。感觉收获不小,比起过去有了一些新的启发。

近一年左右,我开始频繁尝试不同的 Emacs 配置(或者叫发行,因为这些配置的作者们自称为 Emacs Distribution)。一开始我听说 Emacs,是在王垠的文章里读到的,那个时候是我上初三的时候,应该是 2002 年。那时候因为网络的不发达,加上我自身没有合适的硬件,虽然读了不少 Linux、Unix 相关的文章,而且非常痴迷,但没法实践。一直到我上了高中,我才有机会在 GNU 的服务器上下载了 Windows 版本的 Emacs,并且尽量将其当作我的主力编程编辑器。那个时候从没听说过有成套的 Emacs 配置,似乎 Emacs Wiki 里的内容也很零散。不过当时按照王垠的文章,我把 Emacs 配置的比较舒服。当然那个时候也没有 ELPA,文章里说的包,多数王垠的网站上有下载,有少数的也是我从 SourceForge 等地方找来的。

之后我接触 Emacs 配置是 Emacs Starter Kit,这是我在加拿大上大学时就接触到的。现在想不起来当初的具体缘由了,不过我一直对 Knuth 的“文学化编程”很感兴趣,尝试过 CWEB,还看过周琦大妈介绍的 Leo 编辑器。然后因为 Emacs Starter Kit,了解了 Org Babel。之前我知道 Org,不过还没有接触过这么高级的功能,主要是用作上课记笔记,然后导出成 PDF 或者 HTML。了解了 Eamcs Starter Kit 对 Org Babel 的使用,简直让我大开眼界。我于是下载了这个配置,使用了一段时间。后来放弃的原因,一是有些设定不符合我的使用习惯,我想调整一下,面对这么复杂的代码结构,感觉无从下手;二是后来出了一些我还解决不了的问题,而查看它的页面,也已经好久没有更新,所以我渐渐的不再用它了。

Spacemacs 是我接触的第二个 Emacs 配置,也是对我影响最大的一个 Emacs 配置。我也是在 Spacemacs 里面学会用 Evil 的。之前接触过 Evil,但一直对其不屑一顾,认为它没有存在的必要。后来在 Spacemacs 里面用的多了,才渐渐的习惯,今天分析这样是好是坏也不好说。我使用 Spacemacs 也不是一帆风顺,一开始怎么也不习惯,安装、卸载了好多次,一直不得要领。后来也是突然开窍,渐渐的找到了关键,特别是对 Evil 的模式有所了解,渐渐的能在里面正常做事情,而不再有一个初学者第一次打开 Vi 的感觉了。后来 Spacemacs 长时间不更新,我也没有养成很高的忠诚度,所以又尝试了几种其他的配置。细数起来,有 Doom Emacs、Purcell、Prelude、Redguardtoo 这几个主要的。其中,我感觉 Doom Emacs 最合我的路子,我也用了它最长时间。它非常快,这比起我之前用的 Spacemacs 有很大提升。再者,它的配置也让我感觉非常舒服。Purcell 是我看了陈斌的介绍尝试的,和 Prelude 我感觉差不多,不过因为 Purcell 里没有 Evil,我感觉有点不习惯,不过他们的代码结构相对简单,我一度想以此为基础弄一个自己的配置,结果没有坚持下去,证明我的功力还较陈斌有较大差距。陈斌的配置,Redguardtoo 也是个不错的配置,有很多非常奇妙的思路,不过缺点是它的主人,陈斌的个人风格太强烈了,使用它就意味着我要学习陈斌发明的各种快捷键,我看了列表就放弃了,回到了 Doom Emacs 的怀抱。不过,陈斌写的《一年成为Emacs高手 (像神一样使用编辑器)》给了我很大的启发,我学到了不少东西。

以上就是我使用的 Emacs 配置的历史。我虽然用 Emacs 有将近 20 年,但我自我感觉没有很深入的了解,因此对一些观点持谦虚谨慎学习的态度。我印象最深的一个观点是陈斌在他《一年成为Emacs高手 (像神一样使用编辑器)》里站在巨人的肩膀上一节里说的:

这方面我是负面榜样. 刚开始抱着玩的心态, 到处拷贝别人有趣代码到我的配置中去.

这是浪费时间!

我应一开始就照抄 世界级大师 Steve Purcell 的 Emacs 配置.

陈斌的观点和我一开始的做法很像,我也是从各处找配置放到自己的配置文件里,直到我开始用了别人的配置。我不确定这样对不对,不过陈斌的说法还挺有道理的。我近一年也是这么实践的。不过,今天我改变了我的想法。

以我这次遇到的例子,邮件客户端的配置坏了,我不知道从哪里找问题,于是就一筹莫展了。尝试去分析问题,我除了取消了 ~/.doom.d/config.el 文件里 notmuch 前面的注释,没有修改其他配置,就莫名其妙的坏了,其他的东西都是黑箱,想进去找问题,有些超出我的能力了。

之前也有类似的例子:我在 Doom Emacs 里使用 Org Capture 来做记录,感觉挺方便。单位的 Windows 电脑上我也装上了 Doom Emacs,我想在这上面也用 Org Capture,结果 Capture 生成的内容里面,时间戳里星期的汉字显示发生了问题,显示的反斜杠跟着十六进制的东西,明显是编码问题。更倒霉的是,我按 C-c C-k 退出,Emacs 问我文件的编码,我没有选对,导致了我整个 Org 文件也成了乱码,也没法恢复。好在这个文件在 OneDrive 里有同步,我可以找回之前的版本,但也足够让我冒冷汗了。问题原因找不到,上网查也没结果,如果我不用 Doom Emacs 就没有这个问题,找了 Doom Emacs 相关的配置也没找到问题所在。Doom Emacs 的 Org Capture 模版我用的挺顺手的,想把它弄出来不用 Doom Emacs,最终也没有搞成功。原因也是,Doom Emacs 的配置很复杂,setq、defvar 各种各样的操作,看的头晕。

还有就是我之前用 Emacs Starter Kit 的经历,我想对它进行修改,难!当然存在我自身水平不足的原因,但相比起普通配置,这些配置的架构性太强,很难让我进行调整。

这就是我这次下定决心重启 Emacs 配置的原因。网上现成的配置文件好是好,但把一些底层代码封装起来,而且使用结构化的方式来进行组织,更加增加了我进行调整的难度。虽然普通用户直接使用这些配置,可以更加快速的进入工作,但对我这种想对底层进行修改的用户来说,障碍有些大。况切,我这次发生 notmuch 配置失败的情况,也够我喝一壶的了。其实这和十年前 Linux 用户反对 Windows 的理由不是差不多吗?我们都想要自由,所以我选择了重启配置。弄一个属于自己的配置,绝大多数代码是我手动输入的,基本上都了解了他们的作用,在现代 Emacs 的机制帮助下,我对我的 Emacs 配置感觉掌控力空前的高。

我按照 Using Emacs 系列的讲座里一点一点配置的,也使用了 Org Babel,对一些比较陌生的包,我都写了文档做记录,保持好了良好的结构。use-package 的使用非常有效,让我的配置文件具备了可移植性,对我来说是非常振奋的。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注