写在使用 emacs 一周年
Table of Contents
我是去年春节假期开始使用 emacs 的,现在又是一年春节假期,我想总结一下我这一年的使用经验。过去的一年 emacs 帮我完成了许多工作,增加了许多便捷、有趣的体验。但是我现在仍然是一个初级用户,热衷于发现新的功能、抄别人的配置,只能看懂和写一些简单的 elisp 代码。尚对修改和实现一个插件没有完整的认识。我使用 emacs 的场景主要是日程管理、知识管理、文档和代码的书写,尚未进入 all in emacs 的境界。下面我总结一下今年都用 emacs 做了哪些事,放弃了用 emacs 做哪些事以及计划明年要用 emacs 做哪些事。
用 emacs 做了哪些事
日程管理
我最常用 emacs 实现的事是日程管理,这部分我依赖于 org-roam, 使用一个 daily 文件夹存储日程节点,每个月一个文件,文件名为 “year-month.org”。通过 “org-roam-daily” 创建当天的日程到一个一级标题下,在标题会添加 x/Y 以记录当前的进度。我会列出当天要做的事情或记录当天已完成的任务,前者使用带 todo 状态的有序列表,后者使用普通的有序列表。这样一来,我就实现了一个简单的 GTD 任务管理方案。同样,对一些不在一天内完成的任务,我也会充分使用 org-agenda 提供的功能,一方面是利用 org-roam 的 project 类的节点进行项目的管理,另一方面是建立几个特定的文件进行任务管理,包括 “Tasks.org, LearningTrack.org” 等等,我会把这些文件全都纳入 “org-agenda-files”, 完成的任务我没有设置自动归入到 daily 记录中,因为情况各异,不好统一处理,而且不总是有任务完成,所以我还是使用了手动的方法归入到当天已完成的工作中。此外, dashboard 也会将最近的 5 条 agenda 放在首页用于提醒和直接进入。
知识管理
目前选择的是使用 org-roam 进行知识管理,方法是遵照了 《卡片笔记写作法:如何实现从阅读到写作》中的方法,简单的想法都 capture 到一个 inbox 节点中,较为成熟的想法则整理为单独的阶段。不知道是不是因为节点不够多,目前还未能感受到这一方法带来的好处。用法更多的还是像一个个人 wiki,某些知识想不起来时直接 “org-roam-find” 寻找相关节点。不过经常出现关键词不在标题中找不到的局面,现在 grep 还不熟悉,这种使用方式使用 grep 可能更好一些。
写作
我使用的主要场景是学术写作,我今年使用 emacs 写完了我的开题报告和一篇学术论文,基本的方式是通过 orgmode 写完后导出为 latex, 再复制到需要的模版中去。我还使用 org-beamer 完成了一次学术报告和若干次内部交流。参考文献使用 org-ref 插入,此外我使用 ivy-bibtex 结合 org-roam-bibtex 进行文献管理。参考文献首先通过 zotero translator 现在到本地并解析元数据,随后同步到指定的 bib 文件中。 ivy-bibtex 可以解析该 bib 文件,并得到相应的文件位置,可以直接在 emacs 使用 pdf-tools 打开文献; org-roam-bibtex 则支持直接为该文献创建一个 org-roam 的笔记节点。这样就实现了在 emacs 中读文献,作笔记,写文章的闭环。在 emacs 中写作,另一个非常有趣的地方就是使用 pyim 包实现快速的中英文混打,这对我来说是杀手级的功能,体验最为舒适的部分。原本 base-dict 词库较小,经常打不出想要的词,最近换了 tsinghua-dict 后体验又有了进一步的提升。 除了学术写作外,我今年还使用 ox-hugo 包撰写博客文章,能够直接使用更熟悉更舒适的 orgmode 来写作并直接转为 hugo 支持的 markdown 格式,体验非常好。加上这篇也只写了很随意的三篇博客,明年要做一些更有质量的输出。
阅读
在上一部分已经讲了文献阅读,其他的阅读场景是读书和 RSS. 读书我使用的是 calibredb, 这是一个 calibre 的前端,可以直接查看、管理我在 calibre 中建立的 library, pdf 格式的书使用 pdf-tools 查看, epub 格式的书使用 nov.el 查看,使用 emacs 自带的 bookmarks 记录上次阅读到的位置(通过 dashboard 直接从首页进入)。此外,还可以使用 org-noter 做笔记,不过这种方式我现在还是觉得不咋舒服,还需要进一步研究。 RSS 阅读主要使用 elfeed 订阅纯文本的订阅源,在我这里主要是 IACR News (IACR eprint), Sachachua’s emacs news, 由于 emacs 显示富文本效果一般,所以一些常规的订阅源,如阮一峰的网络日志,我不使用 emacs 查看。
编码
写代码应该是本职工作,但是我今年写的代码确实不多,主要是修改一些开源的实现和写一些分析的脚本代码,涉及到的主要是 C,汇编和 Python,关于写代码我还没构建出一套特别的好的 workflow, 所以在这里就不表了。不过值得一说的是, org-babel 真的很适合做课程的 assignment.
其他
- 使用 bing-dict 查单词,并直接记录到词汇表中
- 使用 chatgpt-shell 通过 api 使用 chatgpt 的服务
- eshell
发现用 emacs 不太方便的事
论文语法检查
这主要是依赖于 grammarly 的服务,我尝试的相关插件主要有两个,一个是基于 flycheck 的 flycheck-grammarly, 这个插件会特别卡顿,我尚未找到适合的解决方法;另一个是基于 language server 的 lsp-grammarly, 这个忘记是什么原因弃用的了。总之,grammarly 这种点击选择备选方案的模式不太适合 emacs, 我最后还是选择使用了 vscode 中的 grammarly 插件。
pyim 的云拼音
pyim 支持云拼音,但是云拼音的备选词依赖于网络,一方面会出现这么一种情况:我刚看到备选词在 “2” 的位置,手已经去点击 2 了,结果云拼音的结果来了,将备选词顶到了 “3”,这样就选择了错误的词;另一个情况是在 mac 上由于网络有可能出现卡顿的情况。
明年想用 emacs 做的事
- 将 emacs 配置成一个好用的 IDE, 支持以下语言的开发
- C/C++
- Assembly
- Python
- Verilog
- 配置一个好用的 theme, 美观简洁,适合我的审美
- 研究出一个适合我的阅读-笔记-输出 workflow