首页
/
工具
/
fred: A text editor that uses C for everything - Handmade Network Expo 2026
fred: A text editor that uses C for everything - Handmade Network Expo 2026
摘要
Cameron Damera 在 Handmade Network Expo 2026 上演示了完全用 C 编写的文本编辑器 Fred,其核心特性包括内置 TCC 编译器、实时插件系统、动态 Tree-sitter 语言支持、撤销树和会话恢复,所有代码均手工编写,不依赖 AI。
<p><a href="https://lobste.rs/s/nszzsn/fred_text_editor_uses_c_for_everything">Comments</a></p>
查看缓存全文
缓存时间:
2026/07/14 04:16
### TL;DR
Cameron Damera 在 2026 年 Handmade Network 博览会上演示了他的文本编辑器 **Fred**——一个完全用 C 从头构建、自带嵌入式 C 编译器、速度极快且高度可定制的编辑器。新增了主题系统、相对行号、会话恢复和利用 TCC 实现的无缝 Tree-sitter 语言支持。
---
## 关于演讲者与 Fred 的起源
我叫 Cameron Damera(发音像“day camera”),在 Discord 上是 Starfree Clone,也有人直接叫我 Fred。我从 2023 年开始开发这个编辑器,白天是编译器开发者,晚上和做新手爸爸的间隙写 Fred。
Fred 名字大致代表“友好编辑器”(Friendly Editor)。它的核心支柱是:
- **原生**:所有平台层(Windows / Linux)都是自己写的,不依赖任何第三方库。
- **快速**:由于完全控制事件流转、线程和内存布局,启动和操作都极快。
- **高度可定制**:所有配置(颜色、空白显示、行号等)完全由数据驱动。
- **可扩展**:内置 TCC(小型 C 编译器),允许用 C 编写插件,并直接在编辑器地址空间中编译运行。
- **手工打造**:不包含任何 AI 生成的代码,未来也绝不会引入。
---
## 演示:启动速度与基础操作
在 2021 年的普通笔记本上,Fred 启动几乎是瞬间的。与记事本对比,后者明显更慢。
打开 Fred 后,按 `F1` 调出命令面板,可模糊搜索任何功能(如打开配置、文件浏览器)。文件浏览器支持“锚定”模式,扁平显示当前目录所有文件并支持模糊搜索,同时启用“查找全部”小部件。例如搜索 `#include`,首次需扫描文件系统(稍慢),之后每次都在约 300 毫秒内完成,可在 937 个文件中定位结果。
标签可随意拖拽、停靠,形成灵活的面板系统。
---
## 定制功能
### 行号与相对行号
可以切换显示行号,新增了**相对行号**(用户高频需求)。开启后,光标所在行显示为 0,上下行分别显示与当前行的差值,对移动操作非常有用。
### 主题系统
新增了主题支持。内置四个主题:Fred、Solarized Light、Solarized Dark 以及受 ForCoder 启发的主题。切换后可复制颜色值并自行修改。未来会增加更多主题。
### 颜色与配置
可实时修改背景色等参数,所有修改立即生效。
---
## 撤销树:基于不可变缓冲区的版本管理
Fred 使用**不可变缓冲区**实现撤销历史。当用户做出编辑后,撤销并非线性,而是形成一棵树。例如输入“Hello world”,然后改为“My name is Fred”,再撤销至“Hello world”,接着改成“My name is Cameron”——传统的撤销会丢失“Fred”那个状态。
Fred 用 `Ctrl+Shift+Z` 调出类似 Git Diff 的可视化树状 UI。您可以浏览节点间的差异(如同查看 diff),并轻松回到任意历史节点,包括“Fred”。所有历史在会话中保留。
---
## 插件系统与 Live Coding
Fred 内嵌了 TCC(Tiny C Compiler),插件就是普通的 `.c` 文件,编译后直接成为编辑器可执行代码。
### 多光标对齐插件
Fred 的多光标是一等公民。演示中,用户有多个光标在行尾,想对齐多余空格。Discord 社区贡献的插件 `align_multicursors_with_spaces` 一键搞定。其源码只有几十行 C 代码,在 Fred 内部编译运行。
### 现场创建简易插件
命令面板中所有蓝色项代表自定义插件,旁边有垃圾桶图标可删除。演示者快速编写了一个切换 C 风格注释的插件,保存后重新编译并绑定按键,即可使用。
### 绑定与使用
复制函数名,在配置中粘贴到入口位置,即可将插件关联到命令面板或快捷键。
---
## 会话恢复
关闭 Fred 再重新打开,它会**瞬间恢复**之前的编辑位置,包括完整的撤销树(序列化快到几乎无感)。所有历史编辑点都保留。
---
## 利用 TCC 实现动态 Tree-sitter 语言支持
Tree-sitter 本身是 C 语言编写的解析器。通常编辑器需要预编译 DLL 或单独编译。Fred 利用内置的 TCC,让您直接从 Tree-sitter 的源码(如 `tree-sitter-rust` 仓库)加载解析器和高亮规则,无需任何外部构建步骤。
### 操作步骤
1. 将 `tree-sitter-rust` 的目录放入 Fred 的配置路径。
2. 在配置中添加一行,指向该目录。
3. 保存配置后,Fred 会自动编译并启用 Rust 语法高亮。
4. 可与 `.rs` 文件扩展名关联,优先级会覆盖内置的语言(如可强制用不同的解析器处理 C++ 文件)。
5. 重新打开文件,高亮持久生效。
这一功能使 Fred 能够支持 Tree-sitter 定义的所有语言,无需预编译插件。
---
## 总结与展望
Fred 是一个极简但强大的 C 文本编辑器。本次 Expo 独享的发布包括:
- 主题系统
- 相对行号
- 会话恢复
- 基于 TCC 的动态 Tree-sitter 语言支持
- 插件系统(已有社区贡献)
所有代码手工编写,无 AI。未来计划增加更多主题并继续优化插件生态。
---
**Source**
[fred: A text editor that uses C for everything - Handmade Network Expo 2026](https://www.youtube.com/watch?v=xz5aPCRxsv4)
相似文章
X AI KOLs Timeline
marka.md is a cross-platform Markdown editor specialized for AI context management, built with Tauri, React, and TypeScript. It features live preview, Vim mode, themes, and a context tray to bundle notes for AI chats like Claude, ChatGPT, and Gemini.
Lobsters Hottest
Fresh 是一款现代、零配置的终端文本编辑器,具备IDE级别的功能和高性能,旨在易于使用和快速。
X AI KOLs Timeline
Orca 是一款开源的全平台编码 IDE,支持并行 worktree、computer use、嵌入式浏览器、移动端远程控制等功能,可与 Claude Code、Codex、OpenCode 等多种 Agent CLI 协同使用,被推荐为媲美甚至超越 Codex 的开发工具。
X AI KOLs Timeline
该文章讨论了一种方法,使Markdown编辑器能够同时具备Typora风格的即时预览、Notion风格的块拖拽、YAML结构化属性编辑器,编辑时只对源码进行最小修改,并严格遵守Markdown标准。
X AI KOLs Timeline
介绍开源项目 Paseo(18,000+ stars),它将 Claude Code、Codex、Copilot、OpenCode 和 Pi 等 AI 编程代理整合到一个统一工作台,支持本地并行运行、代理间上下文接力、协同排错,并可在桌面、移动端、网页和 CLI 使用。