分享我的 Emacs 入门经验

我是看 redguardtoo/mastering-emacs-in-one-year-guide: Be great at emacs in one year 入门的, 一直用的是 purcell/emacs.d 用了很长一段时间,断断续续地添加了一些自己的配置,最近从零开始整理了一遍配置,算是有一套自己完全了解的配置了 (Spike-Leung/Spikemacs: My Emacs config. 这个配置只考虑我自己趁手,不一定泛用)

回顾我自己入门 Emacs 的经历,我觉得要上手 Emacs 需要:

  1. 本身对 Emacs 感兴趣,愿意花点时间折腾、调试,要有一些耐心克服最初的一点摩擦
  2. 从一个成熟的配置开始上手,毕竟一开始自己不知道 Emacs 能做什么,有什么,自己埋头去配置的话可能也没有头绪。 成熟配置会考虑比较周全,提供不少「开箱即用」的功能,可以更快地把 Emacs 用起来,了解 Emacs 能做什么。
  3. 先用着这个成熟的配置,用上一段时间,把 Emacs 融入到自己的工作生活里,原来用编辑器做什么,现在就用 Emacs 做同样的事情。或许一开始会有摩擦,会有效率下降,但用一段时间就会顺手了。有空就读一下配置内容,了解里面有什么,也可以补充一些自己的配置。
  4. 用了一段时间后,就可以学习一下 Elisp,推荐先看 Emacs Lisp Elements | Protesilaos Stavrou,对 Elisp 有个全局了解;再看看 Emacs Info 里的 Emacs Lisp Intro;剩下的就通过阅读源码,自己写一些 Elisp,在错误中学习。(搞不懂的地方,就查文档,利用 info、describe-* 相关方法、网络查询、论坛、LLM)
  5. 这个时候应该对 Emacs 已经能熟练使用了,也知道 Emacs 里有什么功能,哪些功能是自己常用的。有时间的话,就可以从零开始,写一套自己的配置,哪怕是把现在配置重写一遍也行,但建议是从一个空白的 init.el 开始,一行一行写。目的是了解 Emacs 默认的功能是什么样的、那些习以为常的功能又是怎么来的,可以加深对配置的了解。

我想到这个阶段应该已经完成入门了,剩下的就是继续学习、拓宽视野了。

更多的我写在了博客里:如何上手 Emacs (不涉及如何配置 Emacs,大致的内容就是👆上面写的)


See also:

谁是你的 emacs 领路人? - 闲聊灌水 - Emacs China

不知道论坛里还没有类似的帖子,关于大家是如何入门的,也欢迎讨论 :slight_smile:

6 个赞

现在人们的关注点都在AI了, 以后的人入门emacs也是通过AI了, 我感觉这类人以后可能会想像不出来, 在没有AI的时候,人们是怎么入门emacs的, 甚至是想像不出来以前的人是怎么在没有AI的情况下写代码的

AI 降低了 Emacs 的入门门槛是好事 :slight_smile:

得搞个 emacs 专用的 skills,AI 写 elisp 有点随意

不能用 skill,得用全局的 prompt 才比较合适。因为 skill 按照设计是 lazy loading 只有 agent 认为需要的时候才会加载,而且常常是开 subagent 来加载 skill。而一般的 AI agent 最后写代码的活一般都是主 agent 来干的。主 agent 如果没有全局的 prompt,可能会忽略掉 skill。

用 AI 搭 emacs 配置的框架是可以的,搭个七八成是 ok 的,但是我不认为 AI 写 elisp 配置能像写 python js go 这种工业语言一样人类可以基本不写代码只写 prompt。主要原因是因为 emacs package 迭代还是很快的,远快于主流工业语言的框架的迭代速度。因此 AI 数据集里关于 emacs 插件的配置很容易就过时了。另外就是 emacs lisp 的训练语料数据还是太少了,AI 很容易产生幻觉乱编 package 的 option 还有 函数的名字(当然如果是调的是标准库里的函数一般都还是 ok 的)

因此新人用 AI 写 emacs 配置的时候,记得要多检查 AI 设置的配置变量,调用的函数是否依然是有效的。搭架子没问题,但是具体的配置还是建议多看看 package 的 github repo 以及多用自带的 control-h 看看文档具体是怎么写的吧。

以及 AI 写 elisp 代码很容易写成嵌套很深的 let → if(when) → let 的长长的面条代码,可读性非常差,在 prompt 里建议加一条 global rule,多用 when-let , if-let 生成结构扁平的代码

4 个赞

工作Intellij实在不可替代。emacs折腾来折腾去,最后用的最多的也就是org mode

1 个赞

希望你用的不是破解版!

这就是中文社区的刻板印象么? :sweat_smile:

主要是我还没有看到一个买了license 的用户。

我这边公司都买了企业license,但是现在Jetbrains远程开发不太行,vscode remote的开发方便很多

你们公司不错,企业版license 不便宜。

环境问题,我还没见过身边谁用破解版的

RTFM 和 STFW 在AI时代也并不过时,只是AI提高了这两者的总体效率(并加入了一些幻觉)。就我自己体感来说,很多时候AI生成的代码都不能直接用,仍然必须用静态检查、动态测试等办法慢慢地磨合。另外我认为,与一个问题一个问题地问AI相比,C-h仍然是不可替代的,没有先建立正确认知,直接让AI输出“成品”,那很难看出来这玩意质量如何,而且贴出成熟的文档也不失为减少AI幻觉的好办法

3 个赞

我这几天用 AI 写了一些 ELisp,它有时候贴出长长的一串let*,另一些时候贴出长长的一串setq,我让它改用 dash 宏 / 改用 cl- 宏,甚至有时竟然不许,得我再说一遍,言语近乎恳求才改

1 个赞

同意,顺便补充一下上面两个缩写的含义

RTFM:Read The Fucking Manual

STFW:Search The Fucking Web

主要现在还是 LLM 时代,不算是真正的 AI,或许有一天真的 AI 到来,能够做到也说不定

要做到用户彻底怒了,可不能恳求