如何建立一套自己的 Emacs 配置?

之前一直有在轮着用 Spacemacs 与 Doom Emacs,但是总感觉二者还是不够顺手,因此想要自己从头开始搞一套配置,想问问大家有什么建议?例如:

  • 如何管理包的升级,需要对用的每个包都有足够的了解吗?
  • 有没有值得学习的轻量个人配置?
  • 想要自己的配置不落伍的话,可能需要一直对其进行迭代,如何跟上 Emacs 社区的步伐?
  • ……
2 个赞

包升级:用 git submodule 管理,避免出现升级有问题不好回滚的情况。

配置迭代:关注社区讨论的话题 (知道有哪里可以改进),不要过于陷入细节。

(不太清楚更细的内容,但方向应该不会有问题。希望这不是正确的废话)

1 个赞

我一开始也是 Spacemacs 和 Doom 的用户. 其中 Doom 用了有一年, 在此期间逐步摸索了自己的真正的需求, 写了很多 Doom 的配置, 但这也导致了 Doom 提供了许多我不需要的功能, 而我需要的功能 Doom 没有, 使软件变的臃肿.

这样理清了自己真正对 Emacs 的需求以后, 我开始着手写自己的配置. 刚开始写配置时也需要一定的初始环境 (Starter Kit), 来帮助你在 Emacs 里舒适地写自己的配置. 我的个人建议是阅读社区里子龙山人大佬的电子书 (搭配视频更好): 21 天学会 Emacs 进行入手.

随后为了让你的编辑配置的体验更加顺手, 你可能需要尽可能找更多大佬的例子进行学习, 这其中包括但不限于:

还有李杀大佬的 Emacs 教程: Practical Emacs Tutorial.

你大概需要三个月的时间来完成这些工作. 随后 Emacs 的基本术语、concept 便都有了基本认识.

随后你就能够安心地来逐步加入各种 Package 或者写 Functions 来实现自己需求的功能了, 这个过程很舒适: 日常使用的时候, 哪里发现不舒服了, 哪里就调整一下.


  1. 管理包的升级你需要使用包管理器, 选择自带的 package.el 或者新兴的 straight.el. 不同的包管理器有不同管理包升级的方式, 具体参阅二者的文档.

  2. 你确实需要对每个包都有足够的了解, 尤其是那些分量比较大的包 (e.g. magit, lsp, org-roam), 它们的说明文档要进行详细阅读. 但你不用担心这样做工作量太大, 毕竟你的 Emacs 是根据你个人的需求来配置的. 就我个人而言, 常用的包不超过 20 个.

我个人的配置属于十分轻量化的那一类, 并且使用了很多新兴软件或者功能 (e.g. early-init.el, vertico, straight.el). 由于我自己目前也在学习, 所以我的配置只能提供给你作为大概的参阅.

这是我的配置仓库: ilyaw39/.emacs.d.

配置的关键 features:

  • 使用 straight.el 作为包管理器.
  • 精细配置了 Org-mode 和 UI.
  • 代码编辑方面几乎没有优化.

这里也推荐阅读 @willbchang 的配置, 因为我的许多配置内容收到了他的启发.

仓库: willbchang/ward-emacs.

个人认为的关键 features:

  • 轻量 + 全能.
  • 高性能.
  • 使用 Org 文件来管理配置.

没事水水社区, 日常不断迭代就好啦.

13 个赞

推荐你读一读 Purcell 的配置
他的配置用的是原生的 Emacs 按键,我就是基于他的配置根据自身需求进行裁剪和调整的。包管理我用 Borg + use-package,其实 use-package 都可以不要的,以后打算去掉。 你也可以直接用 use-package + 内置的 package.el 来管理, 或者楼上说的 straight.el

这是我目前日常使用的配置:

6 个赞

对于第一个问题,我觉得完全不需要对每个包都有足够的了解,我是在完全不了解emacs的时候开始用它的,现在我用的很开心——甚至于我应试以外的所有知识与技能都是先干再学而掌握的。或许我比较偏向经验主义,但大家也都知道理性主义也不正确,而甚至马克思都在用纯粹的经验检验他的哲学……扯得好像有点远 :rofl:

从来没对包做过版本管理qwq 除了cnfont之外好像还没遇到过升级后变得不好用过

不落伍的话,常刷刷论坛吧~

虽然我一个文科生,用emacs的侧重点可能和大家有所不同,但攒一套自用配置真的不难 :yum:

我当初是打开vanilla,然后缺啥功能就装啥包,往往就是找到对应的包后copy一下示例配置就可以了,麻烦的地方直接copy大佬的,再做点自定义……统共就用了两三天假期,不用想太多啦~

我的配置quq

2 个赞

以我的个人经历来讲。我一开始会先把插件的功能模块用outshine-mode分组好,写成一个init.el配置。然后把市面上所有流行的插件全部配置起来,然后再逐渐剪裁,最后慢慢摸索成自己习惯的体系。

=====如何下载包=====

package.el,straight.el,git submodule(手动git submodule add,或使用 borg) 这三种包管理方式。我都尝试过,最终使用的是borg。borg后的包像类置包一样。

如果使用borg ,则可以直接写配置文件。不需要使用其他的包如use-package,leaf.el,setup.el对配置进行包裹。使用package.el和straight.el则需要使用use-package这类包。因为直接使用require加载配置,Emacs的起动速度会很慢。

use-package,leaf.el,setup.el群里都有人在用。感觉使用use-package的更多一些(use-package比较老)。

如果直接手动git submodule,你后期会需要考虑怎么优化速度。可以学学manateelazycat的配置。

推荐git submodule 这种管理方式,更进一步推荐使用borg管理。 个人折腾后得出的结论。因为我感觉borg更方便,更容易管理。丢掉use-package这类包对配置进行包裹,包之间的关系基本上很平,不太需要考虑包之间的启动顺序。不想使用的包,直borg remove,转移电脑直接clone后使用borg makestrap。

====如何组织配置======

这个就个人喜好了。Doom和spacemacs都有自己的架构。 个人使用的话,简单点就好。

一种是分离配置到不同的文件中。一种是使用org进行文学编程管理。

====大佬们的配置=======

9 个赞

elisp 中还能用 outline 吗?这个好啊!

outshine 这个package

1 个赞

purcell的配置是不错的起点。我的配置就是基于他的emacs.d魔改的,用了10年了。按自己的工作流迭代就行了。网上文章也就是起个参考作用。

如果emacs lisp较熟了,有自己的想法,从头搞个配置也很容易。

就怕emacs lisp不熟同时低估了自己搞的技术难度。 例如如果对启动速度和性能有要求,那么gc, load-path, mode-hook, autoload, 命令行和emacs lisp交互的一些技术就得懂。

3 个赞

楼上都是老玩家,说得很详细。

我是一个初学者,去年7月份开始使用Emacs,10月份自己开始写(主要是抄)一些小配置。一点经验分享就是,先从简单开始搞起来,然后参考prelude/purcel/centaur等这些成熟的配置,再慢慢优化。

简单起步推荐:用 use-package 或者 leaf.el 对一些常用的包写一些配置。

包管理的话,原生的基本够用。straight.el 也行。

当然,我目前还处在非常初级的水平,只能说自己写的配置能用,所以经验仅供参考。

以上,共勉。

5 个赞

其实用 straight.el 也不需要 use-package/leaf 之类东西的(

1 个赞

刚刚在翻 Github 的时候,看到这位已经将问题整理得很好: