Vim:一个编辑器,养活了一座乌干达孤儿院

它藏在你每天敲代码的服务器里、Mac终端中、甚至树莓派上;它让百万程序员第一次用时手足无措;它由一个人守了32年,不收工资,只收善款——这笔钱,建起了乌干达一所孤儿院的教室和水井。这不是神话,是Vim的真实人生。
二、从Amiga电脑开始:一个工程师的“不服气”,造就了全球最硬核的编辑器
时间回到1988年。 那时Windows 3.0还没出生,Mac还是黑白屏幕,互联网还叫ARPANET。27岁的Bram刚从代尔夫特理工大学毕业,专业是电气工程——一个讲究“电路必须导通、信号不能丢包”的硬核学科。
他买了一台Amiga电脑(当年的“多媒体先锋”,比Mac还早玩视频合成),想在上面写代码。可他习惯用Unix里的 vi——那个只有两种模式(命令模式/插入模式)、没有菜单、不提示“保存吗?”的“反人类”编辑器。
但Amiga上没有vi。 没人移植,没人维护,官方说“不支持”。
Bram没骂一句“这破系统真垃圾”,而是翻出一个叫 Stevie 的vi克隆版,打开源码,一行行读,一行行改。 他不是为了炫技,只是单纯觉得:“vi该有的功能,Amiga也该有。”
1991年11月2日,他在一张名为“Fred Fish Disk #591”的软盘上发布了第一个公开版本:Vim 1.14,全名是 Vi IMitation(vi模仿者)。 两年后,名字正式升级为 Vi IMproved(vi增强版)——缩写仍是Vim,但气质已不同: – 它支持语法高亮(1994年就实现了); – 它能分屏、能宏录制、能正则替换; – 它的配置文件 .vimrc 可以写成一首诗,也能编译成一门编程语言。
Bram曾说:“Vim不是为新手设计的,而是为十年后还在用它的你设计的。” ——这句话听着冷,实则滚烫:他相信,真正的效率,来自肌肉记忆,而非界面友好。
三、乌干达的水井,和Vim启动页上那行小字
1994年,Bram做了一件让所有程序员都没想到的事: 他放下键盘,飞往乌干达西部的基巴莱(Kibaale),在一个因艾滋病失去双亲的孩子们生活的中心,当了半年水与卫生工程师。
那里没有自来水,孩子喝的是浑浊的池塘水;没有厕所,女孩经期只能辍学;没有电,更别说服务器机房。
他回来后,成立了一个叫 ICCF Holland 的非营利组织,并做了一个决定:Vim免费,但请你捐点钱,给乌干达的孩子打一口干净的水井。
从此,每次你打开Vim,第一眼看到的不只是欢迎信息,还有一行不起眼的小字:
“Help poor children in Uganda!”(帮助乌干达的贫困儿童!)

这不是广告,不是弹窗,不是强制跳转——它只是静静躺在那里,像老朋友轻声提醒: “你敲下的每一行代码,都可能让某个孩子多上一个月学。”
这行字,被全球数亿开发者看过。 有人捐了5欧元,有人捐了500美元,有人每年生日固定捐一笔。 这些钱,建起了教室、修好了厕所、装上了太阳能板,还资助了数十名孤儿读完中学。
Vim不是“开源+捐赠”的商业套路,它是开源+布道: 技术可以极简,人心不能贫瘠; 编辑器可以冷峻,使命必须温热。
四、“不接受这个补丁”,一句话,裂开两个宇宙
2014年2月,一封邮件发到了Vim的开发列表。 巴西开发者Thiago de Arruda提交了一个补丁:为Vim加入原生多线程支持。 这意味着:插件运行不会卡住界面,语法检查能在后台跑,终端能嵌进编辑器里…… 听起来很酷?对,但Bram回了四个字:“Not accepted.”(不接受)
理由很“Bram”: – 补丁太大(2000+行),破坏了Vim几十年来“小而稳”的内核哲学; – 多线程会引入竞态、死锁、调试地狱——而这和他“电气工程师式”的可靠性信仰相悖; – Vim不是浏览器,不需要讨好所有人。
Thiago没争辩,也没删库跑路。他做了更狠的事:fork(分叉)Vim,重写内核,起名Neovim。
这不是叛逃,而是一次“技术起义”。 Neovim的目标很清晰: 1. 把Vim的“外壳”(按键逻辑、操作习惯)完整保留——你仍用 dd 删行、ci” 改引号内文字; 2. 但把“内脏”全部换掉:用现代C重写、支持异步任务、内置RPC接口、默认用Lua写插件(而不是Vimscript那种“古老象形文字”); 3. 让编辑器变成一个可编程平台,而不是一个“高级记事本”。
三个月后,Neovim在Bountysource发起众筹,目标1万美元——结果收到3.3万美元。 开发者用真金白银投票:他们要速度,要扩展性,要未来。
而Bram呢? 他没发声明,没建对抗小组,甚至没在博客里提一句。 他只是默默在Vim 7.4里加了异步I/O支持,在8.0里推出 :terminal 命令,在8.2里实验性支持LSP(语言服务器协议)…… 他不反对进化,只是坚持:进化必须从内部生长,不能靠嫁接。
这就像两个木匠修同一张桌子: 一个坚持用榫卯加固老结构,一个直接换成铝合金框架。 没有谁错,只是时代在问:你更信经验,还是更信变量?
五、钥匙掉了之后:Vim从“一人教堂”变成“社区修道院”
2023年8月3日,Bram因突发疾病离世,享年62岁。 消息传开那天,Vim GitHub仓库的Star数单日涨了2.7万。 不是因为新闻,是因为人们突然意识到:那个永远在线、永远审阅PR、永远在邮件列表里温和回复“Good point, let’s discuss”的人,再也不会敲下 :wq 了。
最现实的问题来了: Vim的GitHub组织、域名、GPG签名密钥、发布权限……全绑在他一个人的账号上。 没有交接文档,没有副手名单,没有“万一我走了”的预案——因为他从没想过“万一”。
他的家人做了两件事: 1. 把GitHub组织权限移交给了长期贡献者Christian Brabandt; 2. 在Vim邮件组发了一封简短讣告,末尾写着:“他希望Vim继续服务大家。”
于是,一场静默而庄重的“权力交接”开始了: – 2024年1月,Vim 9.1发布,首页写着:“In memory of Bram Moolenaar”; – 新增虚拟文本(virtual text)、丝滑滚动、OpenVMS支持——全是Bram生前画过蓝图、但没来得及实现的功能; – 配置目录终于遵守XDG标准(不再把.vimrc.vim/乱扔进家目录); – 维护团队扩大到7人,来自德国、印度、澳大利亚、美国…… – 2026年2月,Vim 9.2发布,首次实验性支持Wayland(下一代Linux显示协议)——一个1991年诞生的编辑器,正跟着操作系统一起迈入新纪元。
Vim变了:它开始拥抱新规范、接受新贡献者、尝试新架构。 但它没变::w还是保存,u还是撤销,/pattern还是搜索——变的是皮囊,不变的是筋骨;变的是维护方式,不变的是精神契约。
六、AI来了,Vim要选边站队吗?
2026年3月,Vim社区迎来第三次大分裂。 这次,对手不是人,是AI。
起因是一份PR:一位开发者用CodeLlama生成了一段Vim脚本,用于自动补全JSON字段。他标注了来源,也附了人工审核记录。 争议爆发: – A派说:“AI生成的代码=黑盒代码,不可审计、不可追溯、违背Vim‘人写人懂’的初心”; – B派说:“只要人审核过、测试过、署名过,就是人的作品,AI只是锤子”; – C派(Vim官方维护组)拍板:“接受,但必须满足三条:① 注明模型与提示词;② 提交者承担全部责任;③ 禁止用AI生成核心引擎代码。”
结果,两个新fork诞生: – Vim-Pure:只接受手写代码,连正则表达式都不让AI帮忙写; – Vim-Clean:允许AI辅助,但所有AI产出必须附带完整prompt日志与diff比对。
有趣的是,这两个fork的README第一行都写着:
“This project is dedicated to Bram Moolenaar — who taught us that tools serve people, not the other way around.”
小结:Vim不是软件,是一种“数字手艺人”的活法
我们总爱追问:“下一个VS Code会是什么?” 但Vim提醒我们:真正伟大的工具,从不靠噱头活着,而靠“被需要”呼吸。
它没有花哨的GUI,却让Linux管理员在断网时也能修好生产库; 它不支持AI自动写函数,却让实习生三天学会批量重构百个Shell脚本; 它没拿过融资,却养活了一整个乌干达村庄的孩子; 它创始人去世了,但全球开发者自发整理出《Vim 9 Migration Guide》,翻译成12种语言。
Vim的历史,是一面镜子: 照见技术可以多朴素——只需一个终端、一套按键、一份耐心; 也照见人性可以多丰盛——用一行代码,换一口清泉;
用三十年坚守,回答一个问题:当世界狂奔向未来时,要不要为那些慢下来的人,留一盏不灭的灯?
下次你再按下 ESC,不妨停半秒: 那个让你第一次手忙脚乱的编辑器,曾托起过非洲孩子的课本, 也正托着你此刻写出的每一行代码—— 稳,准,不喧哗,自有万钧之力。
原文来自:Can Artuc
夜雨聆风