如何上手 Emacs
TL;DR
上手 Emacs 的建议:
- 要对 Emacs 感兴趣,愿意花些时间折腾和调试,需要一些耐心
- 从成熟的配置起步,熟悉 Emacs 的使用
- 从零开始重新配置 Emacs,了解每一行的配置的作用
我是看 Chen Bin 的教程 一年成为 Emacs 高手 入门的,这篇教程最大的帮助是让我从 purcell 的 Emacs 配置 开始上手 Emacs,这个配置很成熟,让我感受到了 Emacs 的乐趣。
我很快把 Emacs 用在了平时工作中,一开始可能比较多摩擦,效率会下降一点,但硬着头皮去使用一段时间后就很顺手了。
Purcell 的配置我用了很久,后面断断续续阅读 purcell 的配置,每次都有新发现,也开始添加一些自己的配置;直到最近,我才重新整理了配置文件,了解每一行配置的作用,形成了 我的配置。
我用 Emacs 来写博客、阅读 RSS、记录笔记、写代码、记账、记录待办事项……应该还会继续用很久。
为什么要选择 Emacs
可以看看:
Emacs 上手是存在一些难度的,它不是开箱即用的,需要去写一些配置,使得它用起来更趁手。
首先需要对 Emacs 感兴趣,愿意花些时间折腾和调试配置。刚开始的时候可能用起来会磕磕碰碰,觉得哪里都不顺手,你需要有足够的兴趣支撑自己坚持一段时间,去熟悉它。
接着,阅读一遍 Emacs 内置的 Emacs Tutorial (C-h t),了解常用的操作,例如打开文件、编辑内容、移动指针、保存文件,退出编辑器等。
然后,了解 Emacs 中如何查看 Info,看一遍 Info Help (M-x Info-help) 了解如何在 Info 中移动和搜索;了解 describe-function, describe-key, describe-variable, describe-mode 等,这些方法可以方便地查看相关文档(See also: Introspecting Emacs)。
之后,找一个比较成熟的配置,例如 purcell 的配置,先用一段时间,可能几天或几个月,甚至一年。阅读别人的配置,看看包含什么,怎么用的,都去尝试一下。通过别人成熟的配置,了解在 Emacs 中可以做什么事情、有什么好用的功能,去熟悉 Emacs 的使用。
可以尝试的配置
这些是相对通用的配置,用的人也比较多:
这些是 Emacs 高手的配置,可以参考学习:
这个阶段,要「逼迫」自己去用 Emacs,平时用编辑器做什么,现在就用 Emacs 尝试完成一样的事情,或许过程中会有一些摩擦和困难,想办法去克服它(LLM 会是你的好帮手)。
如果你不知道可以用 Emacs 做什么
你可以试试:
- 用 magit 完成 git 相关操作
- 用 denote 或者 Org-roam 记笔记
- 用内置的 org-mode 做代办事项、Getting Thing Done(GTD)。这方面可以看看 OrgMode tutorial | Rainer König
- 用 Emacs 来写 Markdown、写博客
- …
一段时间之后,你大概已经能够熟练使用 Emacs 了,也对自己喜欢用的功能、常用的功能有了解。
这个时候就可以了解一下 Elisp 了,建议先阅读一遍 Emacs Lisp Elements,对 Elisp 形成一个全局了解;然后看看 Emacs Info 里的 Emacs Lisp Intro,进一步了解 Elisp;之后就可以开始自己写点 Elisp、阅读源码、在错误中学习了。
当你碰到问题的时候
多利用 describe-* 相关方法,例如 describe-function ;或者搜索 Emacs Lisp Manual 进一步了解相关语法;还可以借助网络搜索、论坛、LLM。
Emacs 里的一些搜索文档的方法也很有用,例如:
shortdocfind-libraryinfo-apropos
如果你英文阅读比较吃力:
- 对于 Emacs 中的文档,可以尝试安装一些 Emacs 中的翻译工具,见 Translation In Emacs
- 对于浏览器上的文档,可以试试 Immersive Translate、或者 Kagi Translate
通过养成持续的阅读习惯以及利用 Emacs 提供的试错便利,人们可以在实践中逐步学会 Elisp。只需每次迈出一小步,就能慢慢学会。这就是每个 Emacs 用户都可以学习 Emacs Lisp 编程,或至少更好地理解他们的工具在做什么的方式。
这也体现了自由软件承诺的实现:每个人,而不仅仅是专业程序员,都能从中受益。在我看来,这正是 Emacs 体现 GNU 项目关于软件自由目标的原因:它将这些目标融为一体,并付诸实践,全都凝聚在一个强大的程序之中。
对 Elisp 有一些大致了解后,可以开始写自己的配置了,我的建议是从一个空白的 init.el 开始,一行一行地添加。
关于如何组织配置文件,可以参考:
哪怕是将现在用的配置重新写一遍,也要从零开始写,过程中了解每一行配置的作用和目的,你可能需要查阅很多包的文档了解它们的功能,可能需要经常询问 LLM 了解一些配置的含义。
如果你是从成熟配置开始用 Emacs 的,你可能不知道 Emacs 默认是什么样的、一些你习以为常的功能又是通过什么配置控制的,从零开始可以让你对此有所了解。此外,过程中也可以找到一些自己用不到的配置,从而精简配置。
虽然比较费时、费劲,但这么做可以加深你对配置的理解,并且让这些配置真正属于你。
从头开始写,也有一些小建议:
- 使用
use-package去管理包的安装,会更简洁方便 - 考虑先配置好 minibuffer、补全、一些编辑工具包,方便编写
进行到这里,你大概已经有一份独属于你的 Emacs 配置,算是入门 Emacs 了。
下一步做什么
接下来可以继续探索:
- 找找别人的配置,看看有没有好用的功能,借鉴一下
继续学习 Elisp
- 多练习,在错误中一点点搞懂 Elisp,尝试用 Elisp 解决一些自己的需求,例如:
- 有时间可以读一读 Emacs Lisp Manual,
如果 Elisp 不熟练,也可以借助 LLM。要搞明白 LLM 是如何实现的,从中学习 Elisp 的编写。
- 逛逛论坛、博客,了解 Emacs 的动态:
Happy hacking, Emacs ♥ you!
关于 Emacs,Richard Stallman 说: "Emacs Love every user and will be sad if you don't love it back."
你可以在 Emacs China 上进行讨论,其他可以看看的: