来聊一聊我放弃了用Emacs做的几件事

我用Emacs已经超过20年了,这些年来当然和大家一样,也免不了折腾过许多东西,或者说尝试在Emacs里做各种事情。有些很成功,但也有些一直都没有很满意的结果,最后可以说是放弃了。

  1. Email

最早看到别人在Emacs里用Email,感觉酷得不得了。后来自己也用过很多不同的Emacs邮件客户端,从内建的Gnus,到有一段时间比较流行过的mew,到再后来的mu+offlineimap。简单地说,就是花一点时间以后,确实能在Emacs里收到邮件。如果要说有什么优点,那就是可以纯键盘操作,还有就是可以做书签到邮件里,或者从org-mode里链接到某个邮件,另外撰写邮件时可以用Emacs。但除此以外就全是缺点了,html显示效果很糟糕,操作附件不方便,邮件需要先下载才能看,换个电脑就需要重新下载一遍。这些软件(elisp和外部工具)常常还有各种各样的小问题,例如offlineimap当年我用的时候只要机器一休眠再唤醒它就完蛋了,必须要重启服务。总而言之,除了在别人面前装个B以外,时间效率是得不偿失的。尽管如此,我一直到大约5年前还在用Emacs看邮件,直到公司禁用任何第三方邮件客户端,只允许Web访问Gmail为止。说实话,Gmail的WebApp比Emacs强太多了,显示效果完美,全文搜索完美,拿到新电脑打开浏览器就能用,设置里也可以打开键盘快捷导航,缺点就是无B可装,因为大家都用一样的东西。

  1. C++ Intellisense

因为多年来工作上主要是用C++,这个我也是断断续续折腾了很多年。从CEDET,到irony-mode,到rtags,到lsp-mode/eglot+clangd/ccls。怎么说呢,这个不完全是Emacs和Emacs社区的责任,因为C++的整个编译器工具链生态本身一直就是一坨大便。由于C++是一个特别难解析的语言(有些语言相对容易解析,譬如PASCAL,看到PROCEDURE后面那必然是个过程名),要获取准确的信息,简单地扫描文本是不够的,几乎是必须要将文件完整编译下来(除去代码生成)。这就导致所有这些工具都特别特别慢,消耗CPU,和消耗磁盘空间。现在用clangd/ccls这样的工具在缓慢的索引过程之后(连续半小时CPU飚到800%)是可以提供质量不错的自动完成和代码跳转的。但这只是理想情况下可以用来表演一下Emacs也有这个功能。真正日常使用的话,体验太糟糕,资源消耗巨大,经常崩溃,切换git分支以后经常出错。出错以后就往往需要全部重新索引。我感觉对比较小的项目,这些工具可能还是能用的,但是对我日常工作的代码,基本上困扰多于帮助。

  1. 用org-mode管理日程

我其实还是经常用org-mode做些笔记,尤其是可运行的代码块非常的好用。但是用它管理待办事项的话,尽管一直在尝试,但总觉得没起到什么作用。一方面是因为我自己比较懒散,不喜欢强迫自己按时做不愿做的事。另一方面,org-mode再强大,合上电脑就没有了,不能像Gmail,Google Calendar那样和手机无缝集成,收到邀请能自动变成日历项,手机自动同步到时提醒。

18 个赞

邮件最主要的问题是大多数人都用的是公有邮箱, 除非是重度的邮件列表开发者, Emacs键盘操作邮件没什么优势。

org-mode 太重了, 有时候容易为了折腾org-mode而用 org-mode, 而且文件太大了以后, Elisp性能太拉胯也各种慢。 org-mode很酷, 但是大多数时候都用不上。

Emacs还是要在常识场景下多开发一些不卡顿的App。

4 个赞

目前在用 mu4e+offlineimap ,稳定性还好,没有遇到什么问题。

使用上除了thread不支持折叠这个问题,附件现在 patch 和 图片 已经支持点开查看了。 html 邮件查看不怎么用不了解。

你只看Emacs Dev这些只发纯文本的地方当然是还凑合。在公司环境下不可能强制别人只发纯文本的。更不用说公司邮件经常会附带些会议邀请,文档评论等等在Gmail里可以直接互动的元素。Emacs里就算能勉强显示,这些靠Javascript进行互动的元素肯定是没法用的。

1 个赞

安卓用orgzly,iOS用beorg,都可以通过webdav同步org文件然后手机上提醒日程。

2 个赞

你说的这些我都试过。和Email的情况差不多,你一定要说可以用,那么按照说明跑通一遍流程确实是可以的。但实际日常使用的话,就感觉得不偿失,整天在琢磨为啥这个不对为啥那个没效果,到底哪个环节出了问题。

6 个赞

那现在是转vscode了吗?还是别的什么

没有啊,写程序我还是用Emacs。我只是不用Emacs看邮件管理日历,不用C++LSP罢了。

商业公司用outlook一类的邮件服务的话用emacs肯定是不太合适的。一个是企业一般惯用outlook的回复和引用批注的格式,和纯文本的习惯完全不兼容。还有就是像你说的公司会整合日历、会议这些,emacs很难方便的兼容。另外很多公司(比如外企之类的)可能也不允许使用第三方的邮件客户端登陆公司的邮箱。

读html邮件本身倒应该没问题,我还没有尝试但是记得有看过视频介绍,应该是有插件可以简单渲染也可以用浏览器打开。如果要尝试的话可以个人自己的邮箱用emacs,公司邮箱这种还是按公司的规范来吧。

(据说有的公司甚至ide都要求统一,在公司emacs写程序怕是都不行 :rofl:

:joy:理解错了 原来是放弃everything in emacs 不是放弃emacs

1 个赞

不妨说下你目前用什么管理“待办事项”的,以便和org-mode对比

  • Emasc性能太差了。
  • 大多数插件都停留在可用阶段,也就可用。
1 个赞

预约的事件Google Calendar Web App

需要提醒的待办事项Google Keep

不用提醒的工作上的待办事项记在我的工作日志org文件里

重度依赖邮件肯定是附带的日历服务集成度更高

想知道多大的c++项目 lsp 能卡到不能用

不算第三方依赖的话,也就两万多个文件吧

其实也不是不能用,等它全都索引完了安静下来了,效果还是可以的。但是这个可以的状态很容易因为切换分支,文件改动等等而破坏,然后我发现往往只能全部重新索引才能回到那个可以的状态。我猜测它常常跟不上改变的原因是C++ lsp试图监视整个目录树里所有文件的改变,但是macos最多只能给你一万多个文件file handle。

你试验一下 lsp-bridge 吧, LSP协议并不会要求监视所有文件, 我估计是 lsp client自己实现的问题, 私自在 lsp client加入这种没用又影响性能的功能。

最近基本解决了orgzly git同步问题,感觉orgzly已经进化到操作足够方便了,对比之前经常用到的滴答清单,易用性可以说不相上下。从个人信息收集统一的角度还是值得的

我现在不用C++ LSP还有另一个原因就是我经常需要编辑跨平台的代码,但是C++LSP本身的原理决定了它们只能够看到一个编译分支。既然不能充分信任它,那么还不如干脆不用了。

1 个赞