疑惑🤔:Emacs为什么迷人?

这个观察很不错,让我想到The Art of Unix Programming里的一句话, 我想Unix替换成Emacs也是成立的:

Unix is often said to have been written by programmers for programmers

6 个赞

謝謝提醒,我的意思是我用 pyim 實現的基於拼音首字母搜索,因爲印象中還有其他方案 → 修改了一下讓表達更清楚,並添加了基於雙拼字母搜索,也是我經常用的功能

想到 emacs 還有一個好處,就是很多插件的作者就在本論壇,你的 pyim,還有 emacs-rime、citre 等等,甚至我用的輸入法(魔然)的作者也是本論壇道友

确实是,emacs-china 氛围特别好,大家讨论吹水,几乎没有戾气,这个相当难得

10 个赞

emacs 对我来说唯一的吸引力就是高效的键位

我平时的文字编辑工作 (不包含 coding) 几乎全部是先在 emacs 的 *scratch* buffer 中打好草稿+润色, 然后再 po 到要发的论坛中去. *scratch* buffer 的默认 mode 在我这里是 markdown-mode.

有了顺手的键位, 文字编辑绝对是一种享受. 只不过肌肉记忆让我很难受, 已经很多次在浏览器中按 C-w 结果把整个网页关掉了

1 个赞

我也做过这个事情,所以已经把浏览器的C-w给禁用了。以我常用的 Firefox 为例,访问about:keyboard,找到对应快捷键,取消绑定即可

1 个赞

对我来说,emacs 最大的魅力在于构建了一套 基于 buffer 的统一抽象,这是极具美感的存在。我了解的类似的统一设计还有 plan9,powershell。

下面是 AI 对三者的对比总结:

系统 核心隐喻 口号 (Motto) 本质
Plan 9 文件 (File) Everything is a File 统一的 I/O 接口 (Protocol)
Emacs 文本 (Buffer) Everything is Text 统一的 交互界面 (Interface)
PowerShell 对象 (Object) Everything is an Object 统一的 数据结构 (Structure)

A. Plan 9: “协议的胜利” (The Protocol Unification)

  • 哲学: 所有的资源(进程、网络连接、图形界面、鼠标)都暴露为文件系统
  • 交互方式: open, read, write, close
  • Power Move: 你不需要写 API 来控制窗口,你只需要往 /dev/mouse 文件里写数据,或者读取 /net/tcp 文件来建立连接。
  • 解决问题: 解决了 OS 层面 的资源访问统一性。它让网络编程像读写本地文件一样简单。它是系统架构师 的梦想。

B. Emacs: “界面的胜利” (The Interface Unification)

  • 哲学: 所有的任务(文件管理、终端、Git、网页)都降维为可编辑的文本缓冲区
  • 交互方式: 移动光标、搜索、替换、删除、宏录制。
  • Power Move: 你不需要专门的 GUI 按钮来“删除邮件”,你只需要在邮件列表的 Buffer 里把那一行删掉(就像删掉代码一样),Emacs 底层帮你处理逻辑。
  • 解决问题: 解决了 用户交互层面 的操作统一性。它让编辑任何东西都像编辑文本一样流畅。它是超级用户 (Power User) 的梦想

C. PowerShell: “结构的胜利” (The Structure Unification)

  • 哲学: 所有的命令输出不再是纯文本,而是结构化的 .NET 对象
  • 交互方式: 属性访问 (Property Access)、方法调用 (Method Call)。
  • Power Move:
    • 在 Unix Shell (Plan 9/Bash) 中,ls 输出的是一堆字符。要获取文件大小,你需要数它是第几列。
    • 在 PowerShell 中,ls 返回的是 FileInfo 对象列表。你不需要解析文本,直接请求 ls | select Length。即使界面上显示的格式变了,底层数据依然是对象,脚本不会挂。
  • 创新点: 它解决了 Unix 哲学中“文本流解析脆弱”的千古难题。它保留了 Shell 的交互性,但引入了编程语言的强类型特性。
  • 解决问题: 解决了 Shell 脚本/运维层面 的数据传递准确性。它消除了“文本解析”的痛苦。它是系统管理员 (DevOps) 的梦想。
6 个赞

四十不惑,等你到了四十岁就不困惑了。

(话说这个坛子里有四十岁的人吗,感觉年长的前辈们也就三十岁左右)

1 个赞

maybe有吧

一开始是用不习惯vim的模式切换,emacs键位可以在大部分编辑器和ide里找到插件。后来发现org mode,我之前记笔记用typora写md,然后org mode满足了我在typora里的所有需求还更强大。写代码的话,除了写lisp和偶尔用tramp,我还是喜欢用ide。

在大模型普及之前,Emacs对我来说是玄学天书,是带刺玫瑰。“神之编辑器”声名在外,引得人反复尝试,然后放弃。我用它写Python,发现PyCharm真好用;用它写Org-Mode笔记,发现思源笔记真好用。

时间消解了噪音,转折出现。一边是逐渐强大的大模型足够辅导我使用Emacs,另一边自己逐渐领悟:软件自有核心与边界,各安其分。现在工作中我还是用PyCharm配合思源笔记,业余记录开始引入Emacs。

我和大模型对话,和它聊经济学、生活观察、人生哲理,让它帮我算卦解卦。每次对话后就让它生成一份Org-Mode总结文档。文档挂载在S3上云同步,每天都在Emacs书签中更新五个随机书签作为回顾。

说到核心和边界,Emacs的优势就在于它是一个软件,也是一个框架,一层UI外壳,不需要拘泥于一种使用方法。比如我就学不下去Elisp,所以大模型建议我用Python写每日回顾的工具,只用Elisp调用结果。如果我用思源笔记,就只能翻找插件,或者逼自己学JavaScript。比如我觉得Git操作很复杂,不适合随性的个人笔记,那就用S3挂载,毕竟纯文本文件,随意操作。

在软件世界,Emacs是一个四十岁的前朝遗老,很多新奇功能不会有官方的支持。但是Emacs有自己的核心,就是Elisp解释器和文本缓冲区的框架。牢牢把握这个核心,知道这个核心能做好什么事情,剩下的边界交给其他工具,做好配合就行。

4 个赞

有的,可能人到四十,精力慢慢衰减,再加上上有老下有小,有时候已经无心困惑

还真是除了去世这件事,其他的情况都不年轻。。。 :joy: (这括号里的文字真是一把刀啊)

是的,Emacs 整个平台可以看作是一些基本抽象规则确定后,通过 elisp 表达式一个括号一个括号的堆起来的 minecraft 。Emacs 是一个开放世界,没有明显的构建环境和运行环境的界限,你可以在 Emacs 里修改它并且马上看到效果。

1 个赞

emacs还有一个关键的决策,没有包之类的隔离概念,相当于在开放世界里没有墙,没有特权,想怎么连接就怎么连接

6 个赞

共用buffer,不同作者的package在没有特意设计的情况下也大多能协作,的确是非常迷人了

2 个赞

Minor Modes: 这就是我们热血沸腾的组合技啊!(x

3 个赞