Emacs 入门笔记
前言 · 一点吐槽
为什么诸位都如此热衷于 vscode 啊?
我随便一翻都能看到 inf 篇介绍 vscode 配置的文章,真是够了。
不如来玩点神秘的:Emacs。
什么是 Emacs?
Emacs 是一款由 GNU 开源软件基金会完全自主研发的开源文本编辑器。在这款编辑器中,你将在一个叫做“buffer”的环境中冒险,与 elisp 邂逅,并探明“Emacs pinky”的真相……
不开玩笑了。Emacs 是知名的老牌文本编辑器,与 vi/vim 齐名,长期处于编辑器鄙视链的顶端。它的主要优势是无与伦比的可定制性——它是 Lisp Machine 思想的继承者,整个编辑器内核连同各种功能都由一种叫做 elisp 的语言写成,并且自带一个 elisp 解释器。这意味着用户可以像修改游戏 Mod 一样,自由地修改编辑器的任何代码,或者增加自己的函数,把它打造成任何你想要的样子。
它的可定制性是图灵完备的:理论上,你可以用它来做任何事情,包括但不限于浏览网页,管理日程,与朋友吹水,又或者……原神,启动!
如何获取?
最简单的方法是访问 GNU Emacs 项目官网或者其 GitHub 仓库然后下载。你也可以用你的包管理器,比如 Windows 的 winget 或 scoop,macOS 的 brew,或者 Linux 的 apt、pacman 等等。在包管理器里搜 emacs 通常就能找到。
装好后先别急着打开,因为这时的 Emacs 没有任何配置,外观简陋,功能匮乏,保证劝退。我们需要给它注入灵魂。
如何配置?(新手的捷径)
好问题。你肯定听说过 Emacs 的配置极其困难,但作为一个刚入门的新手(就像我),想快速上手其实非常简单。
要义在于:不要自己从头配! 靠自己一行行攒配置所消耗的时间精力是巨大的,很可能在你配出一个好用的编辑器之前,就已经失去兴趣了。
我们可以直接站在巨人的肩膀上,搜寻一些别人做好的 Emacs 发行版。比如经典的 Doom Emacs、Spacemacs、Centaur Emacs 或者 Prelude。
其中 Doom Emacs 和 Spacemacs 默认开启 evil-mode(Vim 模式),使用体验类似 Vim。我不会用 Vim,所以自然放弃了它们。Centaur Emacs 和 Prelude 则坚持原生快捷键体验,而 Prelude 更加轻量级,并且为用户保留了充足的自定义空间,所以我最终选择了它。
对于 Prelude,你只需要一条命令就能完成安装。打开你的终端(Windows 建议使用 PowerShell):
git clone https://github.com/bbatsov/prelude.git $env:appdata/.emacs.d/
这条命令会把 Prelude 的所有配置下载到 Emacs 的默认配置目录里。
$env:appdata 是一个环境变量,代表你的 Windows 放置 APP 数据的目录。
Prelude 接管了主配置文件 init.el,我们最好不要动它。如果你想自己加点东西,Prelude 已经为我们预留了 ~/.emacs.d/personal/ 目录,你自己的配置可以写在 personal/custom.el 文件里。
等等,
~/.emacs.d是什么? 这里的波浪线~是命令行的快捷方式,代表你的用户主目录(Home Directory)。
- 在 Windows 上,通常是
C:\Users\<你的用户名>。- 在 Linux 或 macOS 上,是
/home/<你的用户名>。 Emacs 会自动在这个目录下的.emacs.d子目录里寻找配置文件。
现在,启动 Emacs(Windows 用户建议用 runemacs.exe,可以避免一个黑色的控制台窗口)。第一次启动时,Emacs 会自动运行 Prelude 的配置脚本,下载并编译一大堆插件。这个过程可能会持续几分钟,期间 Emacs 可能会“未响应”,别慌,这是正常现象,耐心等待即可。
跑完之后,你的 Emacs 就配置好了。尽情玩耍吧。
如何使用?
就把它当做一个普通的文本编辑器用。和 VS Code 或者 Sublime 没有本质区别。
当然,还是有些奇特的地方。比如快捷键。但别怕,去问你的 ChatGPT/Gemini:“Emacs 最基本、最常用的快捷键有哪些?”花几分钟就能学会核心操作。都 2025 年了,这种小事不应该成为门槛。
至于外观,Prelude 默认的主题我就很喜欢,有点像 CLion,至少比上古神器 Dev-C++ 好看多了。Prelude 安装的插件也提供了很多强大的功能,你在使用中会慢慢发现它们的妙用。
我的个人配置
我基于 Prelude,只改了
- 设置了默认编码为 UTF-8,避免中文乱码。
- 设置了中文字体,不然中文没法看。
- 关掉了
whitespace-mode对长行的紫色高亮提示(太丑了)。 - 因为我用 Emacs 写 Scheme 和 Racket,所以启用了对应的模式,并做了一些微调。
我的配置文件放在了 GitHub 上:litjohn/my-emacs-settings,欢迎自取。
注意: 我出于个人喜好用了 Jetbrains Mono 作为编程字体。如果你电脑上没有安装,Emacs 可能会回退到某个丑陋的默认字体。你可以在我的 personal/custom.el 文件里找到设置字体的代码,把它改成你喜欢的,比如 Consolas、Cascadia Code 或者 Fira Code。
你问我怎么没配置 C++ 开发环境?
不是,哥们儿,写 C++ 这种主流语言为什么不用 JetBrains 的产品?CLion 现在对个人都免费了!
我用 Emacs,纯粹是因为它写 Scheme 和 Racket 真的很顺手。工具嘛,顺手好用就行。