讨论一下Emacs半手动包管理

我一直都是手动安装包, 手动安装包可以在配置的时候就排除所有问题包括各种复杂 hook 的定制, 一旦搞定了, 就不动了, 超级稳定, 如果日后有扩展的需求, 因为每个包都是自己配置的, 瞬间就知道怎么来扩展.

Package.el 这种东西对于新手来说是很方便, 但是稍微牛逼一点的包都少不了 mode hook 和自己写一点胶水函数粘贴一下, package.el 安装的是很爽, 各种依赖全部给你搞定, 但是一旦出错了, 鬼知道哪里出错了, 加载出错了? hook 出错了? 和其他包冲突了? 作者手癌犯了, 不小心打错字符了?

这其实就是一个投入产出比的问题, 手动安装包虽然费时, 但是一劳永逸, 相对于 package.el 这种安装时间短, 但是一旦出错调试时间远远超过 package.el 给你节省的安装那点时间, 你会花费更多的时间去分析更复杂的出错原因.

Emacs 本身就是一坨屎墙, 每个人都去墙上抹一点, 你不自己抹, 你最后只会被这些插件之间的复杂性臭死.

分享一下我的Emacs插件折腾流程

  1. 在 github 之间闲逛, 看到作者介绍, 哎哟, 看起来不错哟
  2. magit-submodule-add 加到自己的 lazycat-emacs 目录中
  3. 切换到插件子目录, dired 全选, 直接编译一遍 (这样就不用重启去 load-libraray 了)
  4. 试一下功能, 如果有说找不到某个库, google 看看哪个包, 继续 magit-submodule-add 添加缺少的包, 继续试
  5. 所有包都手动下载好以后, 试验一下, 哎哟, 不错哟, 用 lazy-set-key.el 把这个功能绑定到某个按键上 (默认不启动, 按键的时候临时加载), git commit, 完事
  6. 如果插件不喜欢, 直接 magit-submodule-remove (还没有合并到 magit 代码分支) 移除刚才试验的插件, 避免任何新插件的干扰

这样玩, 大部分插件, 就花最多10分钟就配置好了, 然后就享受这样控制力, 透明度和稳定性, 不会像那些不动脑筋的Emacs用户, 出了错不会排错.

也许很多人说, package.el 多么方便, 我都不会 elisp.

但是我想说的是, 玩 Emacs 这种改装车, 最终你一定是要会 elisp 编程的, 如果你用了那么长时间都不会 elisp 编程, 更不会手动改装 emacs 来满足自己的需要, 为什么你要用 Emacs 呢? 用 VSCode 这些最好, 啥都不用学, 只用就可以了, 作者心情好就帮你更新, 作者没时间, 遇到问题就只能委屈自己了.

我上面说的都是最终达到极致用 Emacs 所需要付出的代价, 如果你不想极致的用, 请忽略我上面的言论.

31 个赞