有哪些 Emacs 快速配置(少于 100 行)能极大提升幸福感?
或:有哪些 Emacs 配置(少于 100行 ) or 插件(开箱即用或轻度配置(少于 100 行))是你离不开的?
问题灵感来自:
KDE 15 分钟 bug
Neovim 300 lines init.lua challenge
Vim 无插件配置
Obsidian 断舍离
有哪些 Emacs 快速配置(少于 100 行)能极大提升幸福感?
或:有哪些 Emacs 配置(少于 100行 ) or 插件(开箱即用或轻度配置(少于 100 行))是你离不开的?
问题灵感来自:
KDE 15 分钟 bug
Neovim 300 lines init.lua challenge
Vim 无插件配置
Obsidian 断舍离
>> ~/.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。
大佬的配置果然很硬核。
在termux上使用emacs的时候吧,pc端配备太重,依赖太多,又触摸屏和实体键盘体验区别太大,配置不适用,只好完全重写termux上的emacs配置,写了百行左右发现实在写不下去了,但 只用org-mode也够用了
可以加密的 org,厉害
与其追求极简,我更在意配置是不是可「裁剪」,二分法屏蔽之后还能不能工作。
当我需要在某特特定场景下使用,很快就可以「裁剪」出一个 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.
对头,相对于语法糖的好看,不如扁平化的可任意裁剪和组合,配置和贴身衣物的需求差不多,主要是自己舒服,而不是外穿好看。
这也是我本来折腾了一阵子 chemacs2 后来又放弃的原因,之前把 Doom 和 Spacemacs 都塞了进去,但他们太重了也太有个性了,导致我连本来想切换不同配置看看哪个更合适自己,最后搞得连打开 Emacs 的兴趣都没有了。
后来我在 Obsidian 里慢慢记笔记,记了几百个插件几百个快捷键之后,觉得是时候在 Emacs 里寻找想要的自由了。
现在的状态是是四处搜刮一些必要的(适合自己的)功能添加到自己的配置里。
我配置文件 repo 最早版本的目的是为了恶趣味做一个“最难用的配置”,难用的地方在于必须通过特定顺序完全 byte compile 宏展开之后才能使用。试了下理论上可行就放在那里了。做这个的原因是因为 spacemacs 居然不能 byte-compile 以后使用。
我配置的第二版是在很长一段时候没有向 spacemacs 里加新 package,反而在逐步从 spacemacs 配置里删功能的前提下完成的,最后发现需要的复杂的包也就在 10 个左右,然后把 modeline,homebuffer,主题这三个东西从 spacemacs 复制一遍,使用体验就和之前的 spacemacs 配置差不多。
我觉得四处抄来的配置是不可能适合自己的,只有在缺少功能的情况下使用 emacs 才能发现自己真正的需求。
顺带因为配置都是自己写的,基本框架完成后从来没有需要 debug 过。拼写错误少括号的问题之类因为配置使用前我都会 byte compile 一次所以基本都能提早发现。
我觉得这些弯路恰恰是必要的,现在我连自己的配置都不会弄,更不要提给 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自带的包)然后直接按^
完犊子啦,我现在即退出不了 Viper 也不会用 Emacs 啦🥵
大佬,问个无关问题,site-lisp 里面的 site 是什么 convention ?python 里也有类似的 site-packages。搜了一下没看到有人解释 site 这个词的由来。 谢谢🙏
Website 的 site。一台电脑上所有用户都能用的安装就叫 site installation。
很多时候用最简配置使用非常舒畅:emacs -Q -l ~/.emacs.d/init-mini.el
学习了。 我也该准备一个 debug 用的 mini 配置。
谢谢zsbd
用了大佬centaur很不错,回过头来试了试mini,依旧很赞