V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
KevinKL
V2EX  ›  程序员

考虑退坑 Emacs

  •  
  •   KevinKL · 16 小时 51 分钟前 · 2498 次点击

    前两天看到 “考虑退坑 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 。

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

    前一句话没错! 后一句话暴露了真实的你, 你一开始就走错了路, 赶紧及时止损还来得及.
    lanrete
        7
    lanrete  
       15 小时 50 分钟前
    现代化的 org mode 编辑器,是 standalone replicate 了 org mode 的功能么,还是只是编辑文件用,具体查看 agenda / roam buffer 还是要去 emacs 里操作
    zw963
        8
    zw963  
       15 小时 43 分钟前
    顺便提一下, 我用 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
        9
    darksword21  
       15 小时 25 分钟前   ❤️ 4
    折腾配置确实很容易反客为主,尤其是在你还没把配置打磨到一个稳定状态之前。比如现在我的配置已经很久没有大的改动了,偶尔只是改改变量。要达到这个“稳定”,其实关键就是要自己平衡好配置的规模和 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
        10
    wniming  
       15 小时 15 分钟前
    我是把 emacs 当作一个轻量级文本编辑器用的,对我来说是刚需,因为 linux 上没有更合适我的轻量级文本编辑器(我觉得 vscode 比 emacs 复杂多了,vscode 比 emacs 更像 ide ),不过我现在也懒得折腾了,还在用 28.1 版本,因为依赖的一些插件有些经过我的魔改后在更高的版本上会出问题。
    wniming
        11
    wniming  
       15 小时 15 分钟前
    另外 28.1 版本的 emacs 在 asahi linux 下使用有显示问题(滚动会导致文本撕裂),导致我不得不在 asahi linux 下使用其他编辑器替代 emacs 凑合用。
    newtype0092
        12
    newtype0092  
       15 小时 12 分钟前
    我记得以前学 Emacs 时很多教程一开始就推荐把 capslock 和 ctrl 交换绑定😂
    KevinKL
        13
    KevinKL  
    OP
       15 小时 12 分钟前
    @justdoit123 未来可能可以只用意念
    KevinKL
        14
    KevinKL  
    OP
       15 小时 10 分钟前
    @Alias4ck 对,很多人都说 emacs 是伪装成编辑器的操作系统
    KevinKL
        15
    KevinKL  
    OP
       15 小时 8 分钟前
    @lanrete 实现了 org mode 的全功能,结构化编辑,capture, agenda view 等这些,对我自己已经可以不用 emacs 了
    KevinKL
        16
    KevinKL  
    OP
       15 小时 4 分钟前
    @darksword21 客观,中肯,实用,手动点赞
    KevinKL
        17
    KevinKL  
    OP
       15 小时 2 分钟前
    @newtype0092 提前拯救你的小拇指,哈哈
    lanrete
        18
    lanrete  
       14 小时 56 分钟前
    @KevinKL 小小期待一下
    关于小拇指的问题,我其实想说你们都不用 evil-mode 的么...
    itskingname
        19
    itskingname  
       14 小时 51 分钟前
    你这篇文章成功激起了我对 metanote 的兴趣,确实可以当做是一篇宣传 metanote 的好软文。
    KevinKL
        20
    KevinKL  
    OP
       14 小时 50 分钟前
    @lanrete vi 的 hjkl 指法太魔性,有一段时间我总搞混导致误操作,而且 emacs 的基本指法很多操作系统也默认支持,所以就一直用 emacs 的指法了
    Wh1te
        21
    Wh1te  
       14 小时 47 分钟前
    @justdoit123 #1 入库老罗的 TNT 是吧🐶
    itskingname
        22
    itskingname  
       14 小时 40 分钟前
    @itskingname #19 ,我之前一直想用 org mode 但是不想要 emacs 。请问 mac 版什么时候上线,我已经迫不及待要使用了。
    cj323
        23
    cj323  
       14 小时 27 分钟前
    哈哈,你和我的 Vim 历程很像

    从较真,到淡然
    从性能极致,到简单易用
    从相信社区,到相信权威

    也许我们都长大了
    TrembleBeforeMe
        24
    TrembleBeforeMe  
       14 小时 26 分钟前
    @KevinKL #4 理论上可以,实践中没人会去重写几万行的 org-agenda.el
    seenthewind
        25
    seenthewind  
       13 小时 12 分钟前
    只能说,是我的小拇指当年说服了我退坑。
    924412409
        26
    924412409  
       12 小时 48 分钟前
    可以试试 vim ,不管是偏原教旨的 neovim 还是各种编辑器里面的插件,体验都还不错
    yb2313
        27
    yb2313  
       12 小时 38 分钟前
    下一个帖子, 退坑 helix
    LuciusChen
        28
    LuciusChen  
       12 小时 13 分钟前
    metanote 引流?说实话你实现的产品可以支持各种语言的 babel 么?如果只是实现了 org-mode 的子集,那可能你的需求在这个子集中被满足了,不足以说明 emacs 就不值得去尝试了,这个子集外的需求的人还是有很多的。
    tomyark123
        29
    tomyark123  
       11 小时 50 分钟前
    引流贴 + 机器味
    KevinKL
        30
    KevinKL  
    OP
       11 小时 49 分钟前
    @LuciusChen 不说 org mode ,即使 emacs 也就这么点用户量,引来引去还是我们这几个人,所以引流是没意义的,而是因为我决定开始做 Metanote 的桌面版了,发现好像真的没有用 emacs 的需求了,有感而发。

    对于 babel 来说,Metanote 的桌面版会支持,emacs 也是通过外部调用支持的,只是 iOS 是不支持外部调用的,所以 Metanote iOS 版没有支持。

    无论是否支持 babel ,我都是支持其他人尝试 emacs 的,emacs 有很多值得学习的地方和优点,包括 lisp 等,即使我现在弃用了 emacs 但依然还在其它 IDE 中保留着使用 emacs 指法的习惯,所以如果有兴趣,并有时间和精力,我还是会推荐尝试 emacs 的
    KevinKL
        31
    KevinKL  
    OP
       11 小时 21 分钟前
    @itskingname 预计一个月内,敬请期待
    KevinKL
        32
    KevinKL  
    OP
       11 小时 18 分钟前
    @924412409 前两天刚看了"考虑退坑 Vim" 😂
    nicebird
        33
    nicebird  
       9 小时 43 分钟前
    虽然我用了 8 年 emacs ,但是也就是配置下开发环境,lsp 、高亮、文件管理器啥的。几年才配置一次。
    luckycat
        34
    luckycat  
       9 小时 28 分钟前
    Spacemacs 用户路过,没说退坑后使用了哪款新工具?有信心在未来十年内持续使用它吗?
    zzhirong
        35
    zzhirong  
       9 小时 25 分钟前
    可以考虑一下脚踏板, 健身编程两不误,不过目前还没看到正规厂商出类似产品,小作坊的话,产品的噪音和脚感估计很难得到保证。虽然我用 Neovim, 但快捷键还是好多, 也希望有一个脚踏,这样就可以合法抖腿了。

    https://emacs-china.org/t/topic/21877/7
    ccpp132
        36
    ccpp132  
       9 小时 13 分钟前
    我用 emacs 都快 20 多年了,不过一直不太折腾,没装多少插件,也不用 org-mode 和 magit
    有很多年用 emacs 在终端下写代码
    现在 jetbrains 的 ide 用的多,不过经常在终端下工作,很多文件处理还是 emacs nw 。非 nw 的模式有点嫌启动慢,虽然这么说,其实也还是会用。
    james122333
        37
    james122333  
       8 小时 38 分钟前 via Android
    这已经是一个梗的模版?
    Dropless
        38
    Dropless  
       8 小时 25 分钟前
    你说的社区是 emacs-china 吧,以前几乎我每天都会去看,社区里确实有一些非常厉害的人,对 emacs 的生态也有很大贡献,不过我账号被封后就再也没上了。Emacs 我之前用的时候也主要用 org-mode, 要用来写代码得折腾很多东西,最后的体验其实也一般。不过现在 emacs 我也不怎么用了,我觉得 org-mode 太重了, 文学编程也不是我的刚需,然后就换回 markdown 了。现在我用 sublime text ,自己写了几个插件来提高 markdown 编辑体验,效果还不错。顺便提一嘴,sublime text 可以自定义的程度也很高,不过肯定没有 emacs 高就是了,但是足够了,社区里有也 vim 编辑模式插件。sublime text 用的 python 作为插件语言,虽然以前对语义空格有点抵触,当相比 lisp, python 对我来说还是好读好写点,只能说 lisp is not for everyone.
    Howlaind
        39
    Howlaind  
       8 小时 24 分钟前
    在我接触 Emacs 的早期,听一句「 Emacs 是伪装成编辑器的操作系统」感觉很酷,而迷上了 Emacs ,折腾许多插件,也写了一些 elisp 脚本。

    断断续续折腾了几年,忽然想,既然我要一个如同操作系统般的编辑器,那我为什么不直接用操作系统呢?

    Emacs 什么都能做,操作系统也什么软件都能装;
    Emacs 能自由定制可玩性高,Linux 上的各种组件也能自己拼配自己写。

    而操作系统本身在性能、易用性上也都比 Emacs 要强得多。界面交互比 Emacs 里方便,图形效果也好不少,用户基数更大,遇到问题也更容易在网上找到解决方案。

    于是 Emacs 在我这就回归了原本的普通编辑器。
    听音乐用音乐播放器,看网页用网页浏览器,聊天用聊天软件,管理文件用文件管理器,日程管理也用专门的日程管理软件,改大型项目用现代化 IDE 。也都用得挺好的。毕竟这些软件本来就是被这么设计出来干这个的。

    而普通编辑器本身的定位嘛,Vim 也好,VScode 也好,用起来差别也不大。Emacs 冷启动还慢。

    最终,就渐渐不怎么用 Emacs 了。
    xfq
        40
    xfq  
       6 小时 24 分钟前
    Emacs committer 路过……不过工作生活应接不暇,太久没有贡献了。
    hbin
        41
    hbin  
       5 小时 40 分钟前
    哈哈哈,这里 Emacser 真不少,甚至还看到以前熟悉的面孔。
    ------------

    我已经很多年不用 Emacs 当生产工具了,但是偶尔还是会折腾下配置。
    hbin
        42
    hbin  
       5 小时 33 分钟前
    @Howlaind 其实 Emacs 冷启动不慢,可能和你加载包的写法有关。

    我是基于 doomemacs 修改的配置,刚试了下:“Doom loaded 179 packages across 42 modules in 0.637s”
    maxwell29
        43
    maxwell29  
       4 小时 38 分钟前
    又是来骗我用笔记软件的。入门 eMacs 后,再也不想尝试了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   954 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:19 · PVG 04:19 · LAX 13:19 · JFK 16:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.