使用 Windows 工作多年,每天输入文本,使用过的文本编辑的工具真的可以说是五花八门不计其数,但你要问起来,在感觉上最顺手的是哪个,可能诸位会意想不到:记事本。
DOS 年代实在太过久远,单行编辑的窘境只残留在某些上古传说里,亲身体会的场景,也就命令提示符下差可比拟。你就是把 DOS 自带的 Edit 从头数落到脚,人家也是个全须全尾的全屏编辑器。以 Borland 公司倡导的 Turbo Vision 字符界面框架没有走几步,Windows 时代(尤其是 Windows 95)就呼啸而至了。
记事本成了最便捷的录入工具——但是,也最是恨铁不成钢。见得越频繁,怨得越频繁。三大痛点:
- 没有语法高亮;
- 打开大文件时容易白屏挂死在那儿;
- 字体不是默认等宽。
为了免遭这些缺点的困扰,又不知尝试过多少编辑器。有 EditPlus、UltraEdit,还有什么 Notepad++、Notepad2/3/4(这么些个版本后缀,但并不是同一个软件),再有什么 Sublime Text 等等。它们往往在上述痛点的某一个或者某几个方面都触达到了优秀的地步,但又往往会带来其它难以忍受的局面:
- 收费,需要破解才能用,或者即使不用破解也凑合能用,但是一打开就有一个烦人提示框要先关闭,标题上故意恶心添加上“未注册版本”的字样;
- 太丑;这方面 Notepad++ 是典型,我一看它那个标签页,隔夜饭就快要哕出来,后面竟然还有什么民族主义的怪异东西裹入;
- 太大、笨重;例如 UltraEdit,启动的时候拖泥带水,看见界面显示全乎感觉就要好久;
- 对中文在内的各种非英语语言支持不好,有的甚至会出现按下回退键只能删除半个汉字的情况(近年来此状况已经有很大好转);
十多年前,俺就曾想自己写一个文本编辑的小工具,对标就是系统的记事本,在保留它几乎所有我喜欢的优点的前提下把开头列出的几个问题顺便满足那么一下子。当时起了个头,项目名称为 danedit,意即“Dandy Editor”,然后,就没有然后了。谁让移动时代到来了呢?:)
前几天把 TWL(三太爷的一个小型 Windows 开发类库)与时俱进之后,这个念头又涌了上来。这些年,文本编辑器是用 AkelPad 凑合着,这已经是能找到最折中趁手的了,但我觉得仍然不够轻盈。不得不说,AI,给我智慧给我胆,越是艰险越向前。
就这样,一时冲动开启了新的项目,名字朴实无华:TextEdit。做了一天之后,突然回想到了 danedit,于是让 AI 检查一下那里面还有没有值得提取的内容,AI 说:

老夫从善如流,Shift+Delete 一按,与往事干杯。
昨天一天,在搞 TextEdit 的暗黑模式。别看系统发展到今天,看上去已经很完善的样子了似的,但对于 TextEdit 这种专门选择了从系统基础的 SDK API 开发的程序,在 Win32 这个层面上,微软并没有开放稳定的接口用于切换主题模式。但即使从三太爷本人的使用体验来说,暗黑模式也是个无法忽视的基本需求了。AI 一开始无计可施,说难度很大,老夫只好亲自出马,翻找前人遗珍,终有所获。完成之后迫不及待找三五好友帮着试用,除了某些安全怪咖凛然拒绝运行这一可执行文件外,其他选手还算配合。
截至半夜,已经收来两个 bug:1. 有些对话框界面里的文字显示会被截断;2. 有时候编辑区会花屏。前者经过俺追问验证,果然是显示器 DPI 惹的祸,而后者虽然概率低,但却严重性高。最终排查的结果是,AI 写代码时忽略了 TWL 的一个原则性的 C++ 对象生命周期的管理方案,导致构造时采用了错误的方式。于是连忙于今早进行 bug 修复。
到现在,TextEdit 的大概特点如下:
- 单文档界面,支持常见编辑操作;
- 内置了若干种常见编程语言的高亮规则;
- 默认强制等宽字体,且一个中文严格等宽两个 ASCII 字符(字体暂不支持自定义);
- 支持比较快速地打开体积比较大的文件(100 MB 左右的 JSON 文件大概 1 秒多的样子);
- 支持暗黑模式(可强制指定,或者跟随系统);
- 理论上能后向兼容至 Windows XP 64 位(32 位的后向兼容可达 Windows 95/NT4,但当前未构建测试);
- 单可执行文件,体积 714 KB(1.0.0.93)。
图标是 WorkBuddy 为它制作的。

