考虑退坑 Emacs

1 天前
 KevinKL

前两天看到 “考虑退坑 Vim” 的帖,这么年的编辑器之争,不写个 “考虑退坑 Emacs” 的话好像 Emacs 赢了似的。

生产力与爱好

本人十年以上 Emacser ,曾经各种折腾 Emacs 配制文件,几乎所有的开发工作都在 Emacs 中完成,也曾自己写 elisp 插件。从一开始的把 Emacs 配成一个花里胡哨的 IDE 环境,到后来的大道至简,只保留一个全屏的主窗口;从一开始的想要在 Emacs 完成所有的事情,到后来的只用 org mode 和 magit ;最终,到了现在的想要弃坑。

如果将折腾 Emacs 做为一项业余爱好,其实 Emacs 还是有很多的可玩之处的。但毕竟大多时候我们需要的生产力工具,而在工作之余又有多少程序员想摸电脑呢,更别说 Emacs 了,(如果有,那对于编程开发一定是真爱,事实上我确实见过不少这样的极客,而用往往技术超群)。

而做为生产力工具,Emacs 会有以下问题

  1. 折腾配置往往会反客为主。用 Emacs 时间久了太容易遇到一个问题就想去折腾配置,这甚至有时会严重到影响正在做的事情。而且插件质量参差不齐,因为是开源自由软件,很多插件是基于兴趣爱好开发,作者并不为插件的使用负责,所以这常常会导至在使用一个插件遇到问题后又回去折腾配置。而作为生产力工具,我想集中精力的去搞生产,我希望可以做为生产力工具的用户,成为被工具服务的对象,甚至可以为此付费,而不是去反过来服务工具。

  2. 性能和易用性堪忧。易用性不说了,在桌面环境下现代化的交互毕竟是带来了更多的便利性,而且也更加美观,最重要的是减少了心智负担,而 Emacs 主打的按键绑定在现代化的 IDE 中配置下来也会有同样的效率,这样来看在桌面环境下 Emacs 并无优势。

    对于性能方面,我曾三度尝试使用 Emacs 替代 XCode 开发环境(不得不说 XCode 是现代化 IDE 中少有的体验这么差的),但均以失败告终。第一次因为补全不给力放弃了。后来有了 lsp ,补全几乎达到了与 XCode 相当的效果,但发现 Emacs 只有单线程,大文件时打一字卡一下,又放弃了。最后一次有人开发了异步实现的补全插件,号称最快的补全插件,不卡顿,于是再一次尝试,发现使用了异步线程确实编辑不卡顿了,但补全出来的慢啊,只不过是将卡顿从主线程移到了异步线程,还是严重影响生产力,于是又一次放弃了。

小拇指的问题

很多 Emacser 会遇到这样的问题,因为使用 Emacs 需要大量按 ctrl 键,长期使用下来会导至小拇指痛,但这并不是我弃坑的理由,网上解决方案很多,换 ctrl 键位置,掌压法,用 space 键代替 ctrl 键等,我是交换了 ctrl 键和大小写切换键,同时用卷曲小拇指的方法按 ctrl 键,长期使用下来并无不适。

不得不说的 Emacs 王牌插件

很多人离不开 Emacs 的原因可能就是因为一些王牌的插件了,到现在我仍在使用 Emacs 的原因就是 org mode 和 magit 了,这两个插件在 Emacs 中堪称是杀手级的,而且在其它编辑器中鲜有可以取替它们的功能。

但是因为我之前开发了移动端的 org mode 见 https://apps.apple.com/us/app/metanote-notes-docs-agenda/id6452550221 , 而且桌面版现代化的 org mode 编辑器 Metanote 也即将发布。

而对于 magit ,其实如果不在意资源占用的问题 IDEA 中的更好用。

于是,我发现当我不再需要在 Emacs 中使用 org mode 和 git 时,我再也找不到使用 Emacs 的理由了。

Emacs 社区

这又是另外一个大的话题,Emacs 是自由软件,自由软件的开发依赖于社区的力量,而为了能让更多人参于到自由软件的开发上,自由软件社区往往会有一种浓重的自由软件精神,甚至成为了宗教信仰,言必称自由,言必称开源,言必称贡献,有时你遇到个问题,提个意见,很多人就会反问,你贡献过代码吗?没贡献过就没资格提意见;或者你觉得有问题你为什么不自己修复并提 pr ?种种这一类的往往会压得我喘不过气来,而我只是一个牛马,尚在为生活奔波,何谈贡献,我只想有个好用的生产力工具而已,所以我宁可付费选择商业软件,而不想在这种自由软件精神的重压之下。

国内也有一个圈内非常有名气的 Emacs 社区,如果我这篇帖发在这那个社区,大概率会被很多 Emacs 的忠实用户所反对,而为了避免引起不必要的讨论,我已经不怎么在那个社区活跃了。

Emacs 的仍有用的地方

虽然说了这么多问题,但在服务器领域和嵌入式开法领域,即需要大量使用终端环境的场景下,Emacs 和 Vim 这样的编辑器仍是不可取替的,仅仅使用 tui 就实现了大部分现代化 IDE 的功能,还是非常有用的。

最后,再见了,我的 Emacs 。

2918 次点击
所在节点    程序员
49 条回复
justdoit123
1 天前
我考虑退坑 鼠标键盘,就用麦克风。
justdoit123
1 天前
emacs 现在基本只剩下 magit 在使用。
TrembleBeforeMe
1 天前
elisp 带给 org-mode 的高度可自定义性是区别 org-mode 与其他待办管理/日程管理/文档记录软件的一个重点。
KevinKL
1 天前
@TrembleBeforeMe 我倒是觉得可能是因为纯文本带给的 org mode 的高度可自定义性,而 elisp 和其它脚本语言没什么区别,用 python 也能做为配置脚本
Alias4ck
1 天前
emacs 不算编辑器吧 算操作系统了
zw963
1 天前
> 但毕竟大多时候我们需要的生产力工具,而在工作之余又有多少程序员想摸电脑呢,更别说 Emacs 了,

前一句话没错! 后一句话暴露了真实的你, 你一开始就走错了路, 赶紧及时止损还来得及.
lanrete
1 天前
现代化的 org mode 编辑器,是 standalone replicate 了 org mode 的功能么,还是只是编辑文件用,具体查看 agenda / roam buffer 还是要去 emacs 里操作
zw963
1 天前
顺便提一下, 我用 Emacs 超过十年了, 最近已经很久不改配置了 (用的好好的, 懒得折腾), 可以说我开机之后, 第一件事就是启动 Emacs daemon (linux 下), 可以说所有编辑工作都使用 emacsclient 完成, 但是,

1. 早期折腾了很多 org-mode 的东西, 后来全忘了, 现在也会用 org-mode 写笔记, 但是几乎不折腾, 只使用最简单的功能.

2. 我从来没用过 magit, 我知道大家都说他好, 我也知道很多人都是冲着 magit 使用 Emacs, 但是我不需要他, 所以我甚至都没试用过它.

如果我给大家一个印象, 我是一个 24 小时仅仅使用 Emacs 默认配置的受虐狂的话, 其实我使用的各种包远远超过 100 个, 个人配置也是一坨一坨的屎山一大堆, 不信你自己去看.

https://github.com/zw963/.emacs.d/

总结:

无意与楼主争论, 只是想表达, Emacs 有很多不同的使用方式, 我使用 Emacs 其实很初级, 但看楼主的描述, 我猜测大概率还没入门.
darksword21
1 天前
折腾配置确实很容易反客为主,尤其是在你还没把配置打磨到一个稳定状态之前。比如现在我的配置已经很久没有大的改动了,偶尔只是改改变量。要达到这个“稳定”,其实关键就是要自己平衡好配置的规模和 hack 的程度。这和“易用性”是一体两面的。

在插件选择上,我倾向于遵循一个顺序:使用内置 > elpa > melpa > vc ( github/gitlab )。尽量避免过多非必要的 advice ,也尽量不要修改 foo--bar 这种内部变量(双横线通常意味着该变量是包内部使用的,虽然 Emacs 不限制你改,但后果自负)。

我也更倾向于使用功能简单、依赖少、纯 elisp 的插件。比如我会选 eglot 而不是 lsp-bridge ,选 gptel 而不是 ellama 。后者功能很强,但也更复杂,过一段时间没用再回来看配置反而变成负担,还得重新学一遍。

一个插件的基本配置,其实就应该围绕这三件事:
1. 安装
2. 设置变量
3. 添加 hook

如果你给插件配了大量超出这三点的定制,就要考虑这些配置的“稳定性”了。就像 OP 提到的那样:你本来在专注做事,结果配置突然出 bug ,花一小时 debug 自己的 Emacs 配置,整个人状态就乱了。



性能方面,我的总结就是一句话:买更好的电脑。当然,Emacs 的性能也和你开发的语言有很大关系:
• 比如我写 Go ,gopls 很稳,静态语言优势明显,Emacs 完全没问题;
• 而写 Python 时,因为 lsp server 太多又不稳定,常常出现 buffer 里一堆红线但实际代码没错的情况,体验很差;
• Vue 我没写过,但听说它的 lsp server 写得也不好(但配合 lsp-bridge 可能还行);
• 有些语言我是不会用 Emacs 去碰的,比如 Java 、Xcode 相关开发等。即使我是每天用 Emacs 的人,但遇到这些场景,我不会硬上。



至于小拇指问题,真是老生常谈了,其实和编辑器没什么关系。



最后谈谈 org-mode 和笔记软件。坦白说,笔记类工具这个领域太卷了,永远会有“功能更多”“更好用”的新产品出现。如果你不停地尝试、切换,反而会把时间都浪费在“找工具”而不是“用工具”上。就像折腾配置一样:一不小心反客为主。

所以我认为:只要你现在用的工具满足了当前需求,就可以安心继续用。我用 org-mode 到现在还没遇到什么搞不定的,实在不行写几行 elisp 就能解决问题。



值得一提的是:Emacs 最新版本其实已经内置了 LSP 客户端、tree-sitter 等现代功能,但上手门槛还是高,需要时间、精力、持续使用。如果你已经工作了,那我并不推荐你再尝试 Emacs——用好你现有的工具就已经足够了。
wniming
1 天前
我是把 emacs 当作一个轻量级文本编辑器用的,对我来说是刚需,因为 linux 上没有更合适我的轻量级文本编辑器(我觉得 vscode 比 emacs 复杂多了,vscode 比 emacs 更像 ide ),不过我现在也懒得折腾了,还在用 28.1 版本,因为依赖的一些插件有些经过我的魔改后在更高的版本上会出问题。
wniming
1 天前
另外 28.1 版本的 emacs 在 asahi linux 下使用有显示问题(滚动会导致文本撕裂),导致我不得不在 asahi linux 下使用其他编辑器替代 emacs 凑合用。
newtype0092
1 天前
我记得以前学 Emacs 时很多教程一开始就推荐把 capslock 和 ctrl 交换绑定😂
KevinKL
1 天前
@justdoit123 未来可能可以只用意念
KevinKL
1 天前
@Alias4ck 对,很多人都说 emacs 是伪装成编辑器的操作系统
KevinKL
1 天前
@lanrete 实现了 org mode 的全功能,结构化编辑,capture, agenda view 等这些,对我自己已经可以不用 emacs 了
KevinKL
1 天前
@darksword21 客观,中肯,实用,手动点赞
KevinKL
1 天前
@newtype0092 提前拯救你的小拇指,哈哈
lanrete
1 天前
@KevinKL 小小期待一下
关于小拇指的问题,我其实想说你们都不用 evil-mode 的么...
itskingname
1 天前
你这篇文章成功激起了我对 metanote 的兴趣,确实可以当做是一篇宣传 metanote 的好软文。
KevinKL
1 天前
@lanrete vi 的 hjkl 指法太魔性,有一段时间我总搞混导致误操作,而且 emacs 的基本指法很多操作系统也默认支持,所以就一直用 emacs 的指法了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1131911

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX