记:Sven, Bram,首先感谢两位接受这次专访,你们先自我介绍一下好吗?
Bram:我出生于1961年,我是一个专业的计算机技师。在Delft技术大学修完电子学之后我的大部分工作都在研究海洋生物颜色试验的复制和打印设备。我使用计算机已有相当长的时间了。我在市场上还在大卖4K的RAM时建造了我的第一台计算机。后来我从焊接转到了编程上来,现在我还是很喜欢电子学,只是没有象以前那样花费那么多的时间了。目前我住在Venlo,荷兰的一个小城市,工作之余我喜欢听音乐。麦克风是我的最爱。但除此之外我没有其他的业余爱好了,也不需要托家带口,所以我有很充裕的时间花在编程上面,我喜欢编程。每年我大概旅游一两次,通常是到一个文化背景完全陌生的国家去,这样可以了解世界上不同地方的人们是怎样生活的,也可以拓宽自己的视野。
Sven:我1967年生于德国柏林。我一直在柏林生活,我目前在从事数学和计算机科学的研究。1989年我通过Email了解到Internet, 1992年我开始使用新闻组,我经常用它进行通讯。Web出现后我开始在网页上整理我过去使用过的一些软件。我曾经玩过吉它,不过自从开始维护这些程序(elm, lynx, mutt,nn, screen, slrn, Vim, zsh)的网页后,也顾不上它了。这些程序都有一个共同点:它们都有一个字符界面。所以它们可以在十分普通的字符终端上运行。只要能通过telnet 进行互接就行(如果你愿意,也可以使用ssh)。
1999年9月我终于去了美国,那次我是到加利福尼亚旅游,在那里我见到了我认识已久的网友们。我从没见到Bram本人,所以我真得看一看他的照片才知道他长什么样。
记:你什么时侯开始写Vim,是什么促使你想写一个这样的软件,能跟我聊聊Vim的发展史吗,可以说Vim是最好的文本编辑软件吗?
Bram:我在1989年开始写Vim, 那时我刚买了一台自己的计算机,Amiga2000 那时我用的是vi,我想用一个与vi类似的更好一点的编辑器,能找到的几个vi的克隆版都不够称心,所以我用了Stevie的源代码,开始一点一点地修改,添加一些命令。第一个可用的版本很快就出来了,1991年发布,这一下招来了很多人
的回应,他们鼓励我把它再增补一些功能,也就是从那时”Vi Imitation”更名为”Vim IMproved”,这之后我就一直往上面添加新的功能。
Sven:1992年我就在找一个可以在我的Macintosh IIvx机上用的vi编辑器。后来我又回过头来用了一阵子DOS(原因很明显),虽然我有更多的理由喜欢Macintosh,但没有Macintosh版的vi。1994年有人向我推荐了Vim–2,我惊喜于终于有人开始增补Vi的功能了。从那时起我就开始通过一个主页支持Vim的发展,同时希望有一天它能被移植到Macintosh 上去。
Vim–3版终于被移植到Macintosh上时我高兴坏了,不过那个版本有很多BUG,还有几个很要命的问题。
Vim–4版没有出Macintosh的版本,这实在让我失望。后来,Linux发展得如火如荼,我又转向了PC。
1997年9月我注册了域名Vim.org,可以更好地支持Vim的发展了。今天的Vim已经远非昔比了,很多其它编辑器的优良特性也应用户之需添加到Vim里,Vim几乎可以运行在每一种平台上,又有了图形界面。不过Macintosh版的移植问题还是让我…
记:你平均每周花多少时间在Vim/Vim网页上维护上,花多少时间去回EMAIL ,回覆comp.editors新闻组,你怎样安排花费在你的工作任务和Vim上的时间?
Bram:我花在阅读和回覆Vim新闻列表上的时间太多了,有时侯我真想不管它了,但我看不得那些邮件没人回覆。现在还可以,工作之外我的时间还很充裕,不过我还是经常在半夜里才有时间回那些邮件。我决定不在comp.editors上活动了,太浪费时间了,幸好有Sven和其他一些人及时回答人们提的问题。我几乎每天都要为Vim花点时间,有时只是修改一点小问题,有时就要大刀阔斧地做一些大动作了。只有我不在家时我才可能一整天不碰Vim。
要是我找了份别的工作,就很难抽空来做这些了,恐怕只有周末才有时间,也正是因为这个我才没去找工作。
Sven:我几乎所有的时间都花在Vim上,大部分时间都花在回答问题(comp.editors 上的贴子,直接发给我的邮件,或者是发在Vim的邮件列表上的邮件。)和维护www.Vim.org网站上了。目前为止我还很少在德国的Vim站点上谈论Vim,但经常跟一些已经熟知Vim的人说起过。我希望能尽力为大众读者写一点文档。网页上已经有了一些这样片断的帮助文档。但写这些东西实在太花时间了。每每如此,我都希望能创建一个全面的帮助文档数据库,内容包括过去的VI文档,邮件列表,新闻组和其它尽可能多的内容。以一种色调适当
可读性较强的形式展现给读者。但,仍是老问题,这不知道要多久…
记:在VIM的编程方面,由谁来开发代码,一共有多少程序员,谁来协调项目的发展,你通常是如何决定各个版本的发行日期的?你是如何做到让来自分散开发的代码协同起来的?是不是任何人都可以加入开发小组?在对待新的函数库如GTK+图形库方面,你如何决定取舍?
Bram:我自己负责大部分核心代码,但长期以来也有其他几个主要的志愿者帮助开发。图形用户界面部分由Robert Webb开发,其它很多模块由别人来开发,通常这些人都是在上面短期开发一阵子,然后就中止了,我要使这些断断续续的工作能得到持续的进展,保证整个项目有一个正确的发展方向。此外,还要维护其它小组成员的代码,由于Vim运行在如此多的平台上,这实在是一件苦差。经常是有人发送给我一个补丁包,由我来决定要不要把它加进去,其实很难拒绝别人的补丁包,因为这都反映了用户本人急切希望看到的特性。但同时也有人抱怨说Vim变得越来越大了。我要做的就是尽量在这两者之间保持平衡。通常Vim的开发问题我说了算。先是倾听人们对Vim的期望,然后在用户需求的基础上做出决定。有时用户所要求的东西和他们真正需要的东西往往不是一回事,这时就要细心分析他们所提出的要求,发现这背后隐藏着的真正的用户需求。或许有些东西在编程实现起来就没那么容易,这也促使我一直都在使用Vim,这样我才能亲身体会用户对它的期望和要求。原则上来说,每个人都可以把补丁发给我。如果我觉得有必要就会把它加入到Vim 的正式版本中来,这也看发补丁的人要求的是什么东西,另外,补丁本身的质量也要慎重考虑。但是Vim已经变得很庞大了,所以我更要细心甄选。
GTK库的移植已经被加入, 因为它运行得不错, 甚至比Athena或Motif都要好,另外,它还是自由软件。头痛的是最初的移植者没有时间去修改BUG,这样我们就要花力气维护它的稳定性,好在现在已经运行得相当不错了。下次再有这样大的改动我可得加倍慎重了。因为加入一个不能运行的特性有害无益。
Sven:现在Vim是众多程序员心血的结晶。但Bram起到了决定性的作用。Bram的工作十分出色。毋庸置疑,Bram是一个经验丰富的程序员,并且他一直都在使用这个程序,这使得他对Vim了如指掌。我实在佩服他的责任心和对各种争端的把握能力—即使是一场激烈的争论。我衷心希望他能为自己的努力得到应有的报酬,好让他能象现在这样细心呵护Vim的成长。但这对开源软件的贡献者们来说还是一件没影的事—到哪里去找这样的报酬呢?也许象linuxfind.org这样的站点会提供一些赞助。
记:现在的Vim代码可以工作在各种平台上,它的体系结构是如何设计的?能否让它很容易地运行在一种新的平台上?
Bram: Vim的体系结构一直在不断的革新之中。有时要加入一个新的特性不需要改动太多的代码。如果新加入的特性打乱了整个项目,那我就要费一番心思好好想想办法了。现在的Vim是一个很大的程序。这样做可
不容易。每一次修改都可能引入新的BUG,很不幸,这说明我们当前的体系结构并不是十分理想。如果有时间我可能在6.0版中做很多的改动。增加一个新平台的支持应该不会太难。如果你有这样一个平台,不妨
拿来试试看。很多UNIX类平台都可以一试,但是象VMS这样的系统就很难支持了。Vim 在UNIX上的背景并不特别适用于VMS。实际上Vim真正的出生地是Amiga,但这对UNIX平台的移植来说不是难事。
Sven:开发小组的程序员们都知道Vim的源代码十分出色。但是每增加一个新的特性都会增加系统的复杂性。这就使得很难为此写出补丁。每次我欣喜于Vim又加入了新GUI特性而更受欢迎时,这些新的GUI特
性都会消耗一大堆补丁。采用一种新的GUI总是特别费事,当然开发起来也更费时间。
有时甚至增加一种新平台的支持都比增加另外一个GUI来得容易…
记:Vim只能用于英语。有没有让它国际化的方案?
Bram:程序本身并没有计划要国际化。那样太艰维护了。光是翻译这些文档就够呛了。但是现在正在计划让它可以编辑多种编码方案的文本。现在已经可以支持希波莱文和波斯文以及一些亚洲语系的编码了。对
我们来说,从右到左进行阅读,看着新插入的字符是往后倒的真是觉得好笑。在6.0 版本中我们计划要加入UTF-8格式(什么东东?),现在这种格式的使用远比以前要来得普遍了。
Sven:是的,增加对UTF-8的支持是一件很有意思的事,这个目标应该在不久就能实现。我希望Vim会加入国际化的消息显示,而且最好有人来翻译在线帮助系统。并且能及时跟踪变化的步伐。(暂不考虑从ASCII字符到其它字符集带来的问题)我们已经在为帮助文档的翻译做出努力了。欢迎大家踊跃支持—但是这是一项艰苦的任务。
记:你在Vim上所做的工作有没有给你带来新的工作机会?Vim如何影响你的生活?
Bram:目前为止还没有人因为Vim给我提供一份工作。但是我的确与世界各地的人们保持着联系。也许这会有助于我找到一份不错的工作吧。与世界各地的人们保持联系是一件很有趣的事。虽然只是通过e-mail。各种不同的文化就隐藏在他们的字里行间里。e-mail让这一切都成为了可能,这真是太不可思议了。刚开始使用不觉得怎么样。但它能让人们空前地聚集在一起。
Sven: 跟bram一样—我也没有因为Vim得到过工作。不过, 我用EMAIL与人们说起我的工作时,他们都会说那不成问题—特别是如果我能到美国的话。很多用户说他们希望他们的程序能支持一种外部的编辑器这样他们就可以使用Vim 。我多么希望有这样的公司能采纳这样的意见。谁知道—也许有一天你能在一个带有外挂编辑器的程序内用Vim编辑文本。
记:Vim是慈善软件,这就是说人人都可以自由地使用它,但是鼓励大家为乌干达的孤儿们做出善举。能详细谈谈这个吗?
Bram:这事要从我自己的故事说起。我已经很多次利用假期的时间到不同的国家与当地的人们呆在一起。
这种方法让我了解更多的人们。我于1993年在乌干达呆了一个月。那是个很特别的地方,因为这是我们第一次碰到切切实实需要我们帮助的人们。在其它地方人们并不会真正需要我们去帮助他们。或者我们没办法去怎么帮助他们。但在乌干达,那里的人们确实需要帮助。三周的时间内我们成立了一所幼儿园。那是一次很特别的经历。
第二年我又去了那里一个月。看到那里的孩子们在新的学校里上学。这种情景大大地触动了我,我决定在那里工作上一年。一年时间里我致力于提高当地人们的饮水与医疗设施的水平上。也更多地了解了当地的人们。
回家后,我想继续帮助他们,于是我在荷兰成立了ICCF基金会。把我在Vim上的工作跟这个结合在一块。我发现这的确发挥了效应。因为Vim的原因,这个项目有了更多的捐赠品。这起到了十分积极的作用。
所有收到的捐赠品都原封不动地用在了孩子们身上。我们的目标是争取有5%的人来捐赠,实际水平还低于这个目标(1998年是1.9%)。
Sven: 我第一次通过EMAIL与Bram接触时他就在乌干达。那里我们之间多数联系都要通过中间人。发送EMAIL可不象现在这样发到<user@domain>这么简单。
当我读到”Vim是慈善软件”时我意识到Vim不仅帮助了它的软件用户们,也帮助了很多孤儿。所以我希望我在Vim上的努力也会对他们起到间接的帮助作用。
我没去过乌干达,但我在1977年住在东非肯尼亚的几个月时间里接触了那里的人们。也去学校看了看(在kissi—kissi是什么地方)。
每次看到从外面公司来的EMAIL我都宁愿他们问能否为乌干达的孤儿们做点什么而不是问Vim的千年虫问题。
记:世界上有多少人使用Vim?他们需要什么?为什么他们选择了Vim?他们主要的需求是什么?
的确是,Vim不需注册。这很好,你不希望一个自由软件还要注册,对吧?任何形式的注册要求都可能会赶跑Vim的用户。
我恐怕难以估计Vim的用户数,计算这个数字只会浪费时间。越来越多的人们从最初的vi转而使用vi的各种克隆版本(elvis, lemmy, nvi, vile, Vim)。
Vi的克隆版本在功能上的增强是人们纷纷转向他们的根本原因。至于Vim 的用户,每一次新功能的增加都为用户转向它增加一个砝码。
Vim-5最大的新增特性是语法高亮,这一功能使得Vim可以根据当前编辑的文本类型所对应的语法规则以不同的颜色显示文本的不同成分。通常这用于程序员们编辑他们的源代码文件。不过Vim也能很好地支持EMAIL和新闻组消息的语法高亮功能。
记:Vim5.4版刚发布你就张罗着要在2000年发布Vim6的事了…下一个千年中你对Vim有什么计划?
Bram:关于这个问题你最好看一下Vim的TODO列表。鉴于TODO列表现在的份量,我可能要用接下来的整个一千年都用在Vim上才行!:-)
去年进行了一次关于用户最希望的Vim功能的投票。这有助于我决定接下来要做什么。其中一个特性是°折行°。这是Vim6.0中首要的新增特性。°折行°可以隐藏文本的一部分,这样可以很容易把握整个文档的结
构。比如说,你可以把函数体都给°折叠°起来。这样你就可以对函数有个大体的把握,或许你要重新排列它们的顺序。光是这个就有很多具体的事要去做,所以最好为此发布一个新的版本。
Sven: 1998年的投票结果显示°折行°是用户最希望的特性。所以Vim-6的主要目标就是加上这一特性。其次,用户最希望看到的特性是°垂直窗口分隔°,这一特性可以创建垂直显示的子窗口。因为很多用户希望能比较两个在内容上相近的文件的不同之处。特别是他们在编程的时侯。
用户呼声排名第三的是为各种语言量身定做°可配置的自动缩进°,因为Vim首先是一个程序员的编辑器…
但是并不是说你非要是一个程序员才可以用好Vim。事实上,我更希望Vim能为初学者增加一些在线支持好让他们熟悉°模式编辑°的概念,但这无疑会增大可执行文件的大小。所以我只能寄希望于帮助文档了。
虽然Vim尽力保持与Vi的兼容性,但可以肯定大多数用户还是很喜欢Vim 的增强特性,特别是看到屏幕上可以看到关于当前编辑信息的提示,文件名和缓冲区号,光标位置和其它一些选项如最大行宽。
对初学者而言能在屏幕上看到所有的字符是很重要的(行尾空白字符和特殊字符)。特殊颜色的显示解决了这个问题。Vim内置的文档格式化功能对于要发送到新闻组的文本或EMAIL信件来说是一个十分强大的工具。
通过网络连接编辑一个远程文件,°折行°(见上),使用多字节字符语言的支持也是得票很高的功能。但是这些做起来可不象说的那么容易。同时我也希望大家能帮助我们实现这些诱人的功能。我尤其希望看到°折行°功能。很多用户将借助这一特性浏览他们文件的大纲。邮件列表上的讨论表明实现这一点还有很多困难要克服,这真是太富有挑战性了!不过,我还是认为在增加这些重头戏之前先解决一些小问题。(比如:一个内置的非图形用户界面的文件浏览器。)TODO列表是一个技术上的目标清单。上面的很多条目标记着一些技术上的目标。如果你不能熟知Vim的所有概念可是很难看懂这个列表的。很多特性的增加是为了弥补缺乏图形用户界面的不足。而且,很多使用Vi运指如飞的用户根本不需要一个图形用户界面。我本人使用GUI也只是为了帮助了解别人关于这方面的问题,做自己的事我从来都不用它。从上面的这些你也看得出来我的兴趣主要在于Vim的非图形用户界面的特性上,这样的特性可以在的终端上使用,只要用命令本身就行了。我所收到的反馈也表明大多数人要的正是这个—而不是诸如菜单或一些特殊程序的支持如拼写检查器或编程语言方面。
所以很久以前我就有了一份这样的列表,描述用户在每天的编辑过程中实际碰到的问题,以帮助开发小组认识到这些问题并提出解决方案。
记:Sven, Bram,再次感谢你们的帮助。同时恭喜你们在Vim上所做出的出色的成果。还有什么要补充的吗?
Bran:谢谢你的专访。商业程序可以用广告来吸引用户,象Vim这样的自由软件就要靠别的办法了,所以感谢你这样的专访。
我十分喜欢用Vim进行编辑,我希望我在开源软件上的努力也能帮助更多的人们达到他们的目标。
如果你使用Vim过程中遇到问题可以试一下”:help”,所有的在线帮助文档都是纯文本的,所以打印出来应该不会有什么问题。附加的文档也补上了,比如德语版的HowTo和”Vim初学者”(也是德语)。
你也可以在comp.editors提问,或者通过6个专用邮件列表—通用的帮助列表。
欢迎在你的主页上发布你的个人使用技巧或窍门。或者是维护一个语法文件,某种操作系统的二进制文件,或者在新闻组,邮件列表里回答别人的问题.非常非常欢迎提供各种形式的帮助。:-)
interview by Herve FOUCHER
copyright (c)1999 AIEFREI/AEP
本文原文位于http://web.efrei.fr/aiefrei/effervescence/123/vim.en.html