有哪些 Emacs 快速配置(少于 100 行)能极大提升幸福感?

有哪些 Emacs 快速配置(少于 100 行)能极大提升幸福感?

或:有哪些 Emacs 配置(少于 100行 ) or 插件(开箱即用或轻度配置(少于 100 行))是你离不开的?

问题灵感来自:

KDE 15 分钟 bug

Neovim 300 lines init.lua challenge

Vim 无插件配置

Obsidian 断舍离

3 个赞
>> ~/.emacs.d $ wc -l *.el
      10 dump.el ; pdumper 生成脚本
      25 init.el ; 配置入口
      96 keys.el ; 虽然叫按键,其实都是 defun,顺便处理一些已知 bug
      69 params.el ; setq
     182 pkgs.el ; 只在生成 pdumper 时加載
     382 total

其它的就是不在 elpa/melpa 上的插件直接保存下来,和一些脚本/XML Schema。

5 个赞

:+1: 大佬的配置果然很硬核。

在termux上使用emacs的时候吧,pc端配备太重,依赖太多,又触摸屏和实体键盘体验区别太大,配置不适用,只好完全重写termux上的emacs配置,写了百行左右发现实在写不下去了,但 只用org-mode也够用了

1 个赞

可以加密的 org,厉害 :+1:

与其追求极简,我更在意配置是不是可「裁剪」,二分法屏蔽之后还能不能工作。

当我需要在某特特定场景下使用,很快就可以「裁剪」出一个 init-xxx.el。也许无法达到少于 xxx 行的要求,但好处是不需要额外花费精力维护一份特定场景的配置。

./init.el        # 主力配置入口
./init-lite.el   # 轻量配置入口,作为命令行和 git 编辑器,也可以用来编辑 Emacs 配置
./init-ediff.el  # diff/merge 专用配置入口
./dont-panic.el  # 天塌下来的时候用的配置,同时也融入到日常使用
./features/*     # 各种包的配置
./site-lisp/*    # 部分包的源代码
./core/*         # 基础设施

spacemace 和 doom emacs 都具备可裁剪性,但是它们的 core 太重了,我希望 core 只是 utilities,不应该包含 features.

12 个赞

对头,相对于语法糖的好看,不如扁平化的可任意裁剪和组合,配置和贴身衣物的需求差不多,主要是自己舒服,而不是外穿好看。

5 个赞

这也是我本来折腾了一阵子 chemacs2 后来又放弃的原因,之前把 Doom 和 Spacemacs 都塞了进去,但他们太重了也太有个性了,导致我连本来想切换不同配置看看哪个更合适自己,最后搞得连打开 Emacs 的兴趣都没有了。

后来我在 Obsidian 里慢慢记笔记,记了几百个插件几百个快捷键之后,觉得是时候在 Emacs 里寻找想要的自由了。

现在的状态是是四处搜刮一些必要的(适合自己的)功能添加到自己的配置里。

1 个赞

我配置文件 repo 最早版本的目的是为了恶趣味做一个“最难用的配置”,难用的地方在于必须通过特定顺序完全 byte compile 宏展开之后才能使用。试了下理论上可行就放在那里了。做这个的原因是因为 spacemacs 居然不能 byte-compile 以后使用。

我配置的第二版是在很长一段时候没有向 spacemacs 里加新 package,反而在逐步从 spacemacs 配置里删功能的前提下完成的,最后发现需要的复杂的包也就在 10 个左右,然后把 modeline,homebuffer,主题这三个东西从 spacemacs 复制一遍,使用体验就和之前的 spacemacs 配置差不多。

我觉得四处抄来的配置是不可能适合自己的,只有在缺少功能的情况下使用 emacs 才能发现自己真正的需求。

顺带因为配置都是自己写的,基本框架完成后从来没有需要 debug 过。拼写错误少括号的问题之类因为配置使用前我都会 byte compile 一次所以基本都能提早发现。

1 个赞

我觉得这些弯路恰恰是必要的,现在我连自己的配置都不会弄,更不要提给 Spacemacs/Doom 做减法了。

相比于去理解这些 distribution,我更喜欢在开始的时间先给自己更多机会接触 Emacs 的自文档,而不是解决由 distribution 新引入的各种配置问题、兼容问题等。

我用 Emacs 的初衷是在 Vim/Neovim 里不能记录快捷键历史,准确的说是不够优雅,不是完全不可能:

用了几年 macOS 后来逐渐了解到很多快捷键是和 Emacs/readline 通用的,再加上 Vim/Obsidian 不够自由,这是我决定好好鼓捣 Emacs 的原因。

(defun my/smart-beginning-of-line ()
  "Move point to first non-whitespace character or `beginning-of-line'."
  (interactive)
  (let ((oldpos (point)))
    (call-interactively 'back-to-indentation)
    (and (<= oldpos (point))
	 (/= (line-beginning-position) oldpos)
	 (call-interactively 'beginning-of-line))))
(global-set-key [remap move-beginning-of-line] #'my/smart-beginning-of-line)

看不太懂,意思是如果有缩进,第一次到非空字符,第二次到行首吗?

虽然但是。我可以直接 M-X Viper (这个是emacs自带的包)然后直接按^ :rofl::rofl:

完犊子啦,我现在即退出不了 Viper 也不会用 Emacs 啦🥵

大佬,问个无关问题,site-lisp 里面的 site 是什么 convention ?python 里也有类似的 site-packages。搜了一下没看到有人解释 site 这个词的由来。 谢谢🙏

Website 的 site。一台电脑上所有用户都能用的安装就叫 site installation。

4 个赞

很多时候用最简配置使用非常舒畅:emacs -Q -l ~/.emacs.d/init-mini.el

2 个赞

学习了。 我也该准备一个 debug 用的 mini 配置。

谢谢zsbd

用了大佬centaur很不错,回过头来试了试mini,依旧很赞