原文:[[Vim-Interview-2022]] 翻译:DeepL,2022-01-26 校对:张玉新,2022-01-27 # Vim 创始人 Bram Moolenaar 访谈:Vim是我生命的重要部分 ## 简介 我们与Bram Moolenaar做了一次很棒的访谈。他是一位荷兰计算机程序员,也是开源软件社区的积极成员。Bram是[[Vim]]的原作者、维护者、发布管理员和 [终身仁慈独裁者](https://zh.wikipedia.org/wiki/%E7%BB%88%E8%BA%AB%E4%BB%81%E6%85%88%E7%8B%AC%E8%A3%81%E8%80%85) 。Vim是一款vi衍生的文本编辑器,在程序员和高级用户中非常流行。 请阅读下面的完整访谈! ## 访谈 Evrone: 回顾过去,Vim的开发工作对你个人意味着什么? Bram:意义重大。我一直很喜欢创造东西,但常常是,一旦作品完成了,我就不知道该怎么处理它了。 有了Vim,我不仅可以自己使用它,而且发布后,非常非常多人都可以使用并受益。它使我的名字为人所知,并间接地为我找到了一份工作。最近时期——现在我已经退休了——它给了我一些有趣、快乐、有益的事情可做。Vim是我生活中非常重要的一部分。 Evrone: 在你看来,软件开发是更接近于艺术还是科学?它是否允许偏离传统技术,还是必须严格遵循主流方向? Bram:在软件开发中,我没看到多少**科学**成份。科学意味着有证据证明某些东西是真的。在软件方面,有不同意见,也有很多经验,但有证据表明一种编程语言比另一种更好吗?是否有证据表明,面向对象的编程会提升生产力?大多数证据都是关于软件性能的,甚至有统计数字,但它与软件用哪种语言开发,用什么工具开发几乎无关。它也不是**艺术**,因为主要目标是软件工作得好,而不是看起来漂亮。 它更像是一种**技艺**。工匠会选择他相信效果最好的工具,而不管其他人是否在用这些工具或其他工具。一个好工匠会在必要时自己制作工具。 Evrone:运行Vim,我们不能无视你对帮助乌干达儿童的呼吁。你是如何想到使用Careware/Charityware许可模式来发布Vim的,以及有多少人可以通过这种方式进行捐赠? Bram:我从来没有想过要通过Vim赚钱。它开始是一个爱好,而且大部分时间我都有一份收入不错的工作,除了有几年我提出捐助外。尽管如此,还是有不少人说他们认为Vim是有价值的,而且其他编辑器也在付费销售。所以我决定将我帮助贫困儿童的愿望与此相结合,慈善软件( Charityware )就这样诞生了。它运作良好,每年通过这种方式筹集大约3万欧元,帮助大约50个孩子完成他们从小学到大学的教育。这些捐款来自几个大赞助商和许多小额捐款。 Evrone:尽管Vim具有所有的灵活性和功能,但它并不是一个直观的编辑器,入门门槛相当高。如果有人想有效地使用Vim,他们需要花相当多的时间学习控制命令。你这样做的原因是什么,何不引入一些 "适合初学者" 的模式,再逐渐增加复杂度? Bram:实际上,有很多人不知道有种模式,人们可以不必知道所有的命令就直接输入。这就是所谓的 "Easy Vim",即evim。但我想它用得不多,因为一旦你听说了Vim和所有强大的命令,你为什么要使用一个让它像其他编辑器一样工作的模式?很明显,Vim和Vi一样,是需要学习使用的。对我来说,我或多或少是被迫这样做的。当时大学里的一个实践班只有一台特定的电脑,而上面唯一的编辑器是vi。在向老师抱怨后,他们的解决办法是给我们一张单页的小抄......如果没有这种被迫的学习,我可能永远也不会跃跃欲试地学习使用Vi,而历史的进程也会非常不同。 Evrone:近年来,我们看到开发者问 "某人的代码能解决我当前的问题吗?",而不是从头开始编写自己的代码。结果呢,一些应用程序满足了企业规定的严格期限,但看起来却像拼凑的弗兰肯斯坦。从你的观点来看,这样的做法是否可以接受? Bram:这种情况通常发生在由对软件没有洞察力的人下令制作软件的时候。我曾在一家公司工作过,在那里,不少接受过物理学和机械学教育的经理认为,软件只是和他们所知道的一样,他们可以决定如何制造它。那家公司走了下坡路,最终被接管了。 同样的情况也发生在决策者可以逃脱失败的地方,比如政府。写代码的人可能只是确保他们得到报酬,然后从犯罪现场逃跑。在天平的另一端是那些想写出漂亮代码的人,他们在代码上花了很多时间,但并不关心它是否真正做到了它想做的事或预算是多少。在这两者之间,存在着一种平衡。 Evrone:两年前,一个实验性的分叉Vim9被宣布。你能告诉我们更多关于这个分叉的情况吗?这个项目目前处于什么阶段? Bram:Vim9不是一个分叉,而是让Vim变得更好的下一步。我一开始做了一个实验,看看把一个函数编译成字节码是否能使Vim脚本的速度大大提升。结果发现效果不错,但确实需要对语法进行修改。这不是一个简单的选择,同时支持一种脚本语言的两种变体,但我认为这将发挥作用,并使插件编写者感到高兴。传统的语法将被保留,这就是为什么它不应该被称为分叉。我并不期望所有老的Vim脚本都能用新的语法重写,因此我们将继续支持传统的语法。即使是Python,也花了非常非常长的时间来让99%的Python代码转换为Python 3。而剩下的那1%还在那里...... Evrone:保持向后兼容总是很困难的,因为许多功能不能在不破坏的情况下实现。Vim9会坚持其向后兼容的原则吗,还是会在Vim的历史上打开新的一页? Bram:Vim9的脚本是不向后兼容的,但是传统的脚本语法也是可用的。人们可以为每个文件和每个函数决定使用什么语法。这样一来,我们就有了让Vim9脚本工作得更好的自由。不过,这两种Vim脚本的变体还是非常接近的,人们可以编写其中任何一种。我一直小心翼翼地确保当犯错时,会给出一个错误,以帮助用户迅速解决这个问题。 Evrone:IRC被指定为Vim官方网站上的社区频道。现在它并不那么流行,一些初级专家也没有听说过它。你打算哪天转到更实际的Slack或Discord,通过这种方式给Vim带来更大的影响? Bram:我是很守旧的人,我的主要沟通方式是电子邮件。 这不仅是因为习惯,而且还因为它的不干扰性。我可以在我想看的时候阅读和回复信息,而在我不想被打扰的时候,可以推迟这个时间。当然,用户可以自由选择任何适合他们的方式,其他人可以组织。不过,类似于聊天的交流方式确实容易让人觉得很吵。 Evrone:利用大量的网络手册,我们可以发现很好的插件来扩展Vim的强大功能。你有什么最喜欢的插件和必须的东西可以推荐给我们的观众吗? Bram:我不得不承认,除了发行版中包含的插件(如matchit和termdebug)外,我并不使用很多插件。当我有更多需求时,我或者快速修改一下程序,或者把它添加到Vim的基础库中。这就创造者的一种奢侈 :-) Evrone: 考虑到你的丰富经验,你能为开发者分享一些生活小窍门,如何在多年后保持生产力?谢谢。 Bram:没有小窍门,只有一些基本的规则和建议。我看到年轻人做的一件事就是工作到很晚,结果第二天早上又开始迟到。大多数人在早上最有生产力。因此,对何时停止工作设定一个硬性时间限制要好得多。也许可以记下你刚才的位置,然后放松一下,睡个好觉,第二天早上继续。很多时候,你昨天被卡住的问题突然有了新的见解,你知道该怎么做。「睡一觉 」这个词其实很有效,至少对我来说是这样。另一件事是,有时你需要的不是一些巧妙的解决方案或无休止地调整你的配置,而只是快速输入。Vim中的宏记录和重复功能,足够你做200次这样的事情。你需要多少时间来写一个这样的插件呢? ## 结语 我们很感谢有机会采访Bram,从他的宝贵经验和多年的专业知识中学习。 在Evrone,我们提供定制的软件开发解决方案,旨在满足客户的特定需求。如果你有一个需要帮助的项目或想法,或者你只是想了解我们的服务,请通过下面的表格给我们发送信息,我们将很乐意讨论我们如何提供帮助。