小强
版主
大法
等级: 23 - 炉火纯青
HP(生命值): 93 / 559
MP(魔力值): 219 / 1759
EXP(经验值): 36 %
得之我幸,不得我命
查看个人网站
查看详细资料
TOP
正式会员
等级: 4 - 略有小成
HP(生命值): 0 / 85
MP(魔力值): 10 / 260
EXP(经验值): 40 %
今日的 UNIX 或 UNIX-like 操作系统上,可供选择的文字编辑器相当多,从 ex, ed, vi, vim, joe, Emacs ....等。各有各的编辑模式与风格。如果我们简单地用窗口与非窗口式编辑来二分类的话,牛伯伯的代表作 GNU Emacs 可谓为窗口编辑器的代表,这类的编辑器上,可以使用鼠标,操作上较为人性化。至于非窗口式编辑器,如 ex, ed, vi...她们虽发展、成熟于 UNIX 早期,但至今仍广泛地沿用着。所以,青菜萝卜各挑所爱。 在此介绍的主角是 vim,所以,请容我从她的前身说起...
在 UNIX 步出 AT&T 的前后,配备缓冲器的数字式 CRT 屏幕才逐渐商业化。不过,不仅价格昂贵且配备的缓冲器也少的可怜。因此,在今日的我们应该不难理解当年的 ex, ed 为何会采用那样的编辑模式。但还好当时集成电路的发展一日千里,因而到了 1977 年 ADM-3a 出厂时,屏幕上已可显示 1920 个 USASCII 字符了。而当年就读 BSD 的 Bill Joy 就是在 ADM-3a 这款屏幕上完成他至今宁愿当初没写的 Visual Interface 编辑器,简称 vi。 vi 这种指令式的编辑风格,打从他诞生以来就褒贬不一,上手的人是爱的要命,无法接受的人则是痛苦的要死,所以 Joy 在写完 vi 后就得"幻听"的毛病。其实这并不能怪他,为何把 vi 写的如此"杰出",既不须使用鼠标又能没有选单,光靠一个键盘、十根手指、几个常用指令就能非常方便地进行全屏幕式的纯文字编辑。还这么长寿地被用到现在。如今你要怪就得当年那台机器上不支持鼠标,或者怪 MIT 为何不早点发展 X 窗口。还好牛伯伯在 1984 年写了 Emacs,要不然 Joy 恐怕得学 Van Gogh 割耳朵了。 总之,在当时的条件下造就了今日我们所见的 vi 编辑风格。一切尽在十指间。
尽管老 vi 的编辑风格,早在 1977 年时已近乎炉火纯青。但日新月异的作业环境与应用,总会出现新的、不同的需求。Joy 老人家怕"耳朵痒"不愿再写了;但拜当年 BSD 开放程序原始码之赐,后继狂热的 vi 一族们,可没闲着,纷纷为 vi 加上自己需要的功能。其中最为耀眼的就属 Bram Moolenaar 所选写的 vim 了。 1991年 11月 2日,Bram Moolenaar 发表了他的 vim(1.14版)。这起源于身为 vi 一族的他想在自己的那台 Amiga 计算机上使用 vi,因而开始找寻 Amiga 上可用的 vi 程序,但找来找去,只找到几种不怎么合他意的 'clones',于是他选择了其中的一版程序开始动手修改。就这样他将程序改善到能执行 vi 的所有功能,同时还加上了像 multi-level undo 这样的新功能。事后,他将这版程序命名为 vim,也就是 Vi IMitation 的意思,并将程序交给了 Fred Fish 放在 public domain 磁盘中散布。 随后,开始有人响应他们对程序做的修改,Bram 持续地修补程序并为她添增新的功能,另有些 vi 一族们则努力地将她移植到 MS-DOS 上头跑。次年,vim 1.22 版发表,她已经顺利地被移植回 UNIX 上了(此举似乎意味 vi 一族们对多年来忙于 UNIX 版权战争的拥有者的一种无能的抗议)。Bram 本人亦感觉到 vim 程序的成熟,于是将原先的 Vi IMitation 改名为 Vi IMproved。 就这样 vim 持续地增加新功能,版本也一路演进。1994年 vim 3.0 加入了 multiple buffers and windows,1996年 vim 4.0 在 Robert Webb 的协助下,加入了 Graphical User Interface。1998年 vim 5.0 加入了 Syntax coloring/highlighting,2001年 vim 6.0 加入了 folding, plugins, vertical split。时至今日,vim 所拥有的功能已远远超越了停滞不前的原版 vi 了。
vim 免费地散播在 vi 一族们的计算机上,在广泛地流传下 Bram 开始得到关于付费的响应。一些 vim 的使用者想藉此"鼓励" Bram 的努力。但他并不愿意因为 vim 程序的散播而接受这些金钱。他本人表示,一方面他自己并不需要额外的金钱,二方面则是 vim 本就是一套免费的自由软件,他不喜欢人们因此而付费给他。 曾经在乌干达南部做过一年义工的 Bram,开始认真地思考该如何处理这些响应。当 "Charityware" 这概念在脑海闪过时,Bram 意识到这或许可行,vim 依旧是免费的自由软件,也让愿意主动付费的使用者有个更有意义的目标与理由奉献出他们的金钱。于是乎 Bram 决定让 vim 成为慈善软件,他在 vim 的在线说明中写下这样的一段话 *iccf* *ICCF* Vim is Charityware. You can use and copy it as much as you like, but you are encouraged to make a donation for needy children in Uganda. Please see |kcc| below or visit the ICCF web site, available at these mirrors: http://iccf-holland.org/ http://www.vim.org/iccf/ http://www.iccf.nl/ 这段信息,在你进入 vim 的任何时候,使用 :help iccf 都可以看到。根据 Bram 本人表示,他确实收到不少使用者寄来要给乌干达孤儿的捐赠品。1997年约有2000美元,而1998年约有4000美元,这其中有相当份量是来自于德国。但,这引发的绝非仅止于金钱层面的影响。他本人表示: It is not only the money. The Charityware concept also helps to make people aware of the need of other people. If I would not have started this, few people would know about the project in Uganda. For many people it takes time to get used to the idea that there is more to life than making money and taking care of yourself. I have had reactions from people who could not afford to donate, but were moved by the concept. In some way it seems Charityware changes people a bit. ..........如此情怀...汗颜 乌干达是个多种族多宗教的国家,全国约有 40 几个不同的族群,在共和国成立后没几年即爆发政变,至今依旧纷乱不止。然而这个曾被丘吉尔叹誉为是 "非洲之珠" 的美丽国家,如今的苦难还不仅止于政治上的争斗与动乱。 打从 1981 年发现第一例艾滋病以来,该国成为艾滋病的重灾区,有 200多万人感染 HIV(艾滋病病毒), 100多万人死亡,170多万儿童沦为遗孤。年均所得仅 256 美元的乌干达,是个贫困需要外援的国家..他们极须各种可能的人道援助。 ICCF Holland 是由一群自愿志工所组成的福利团体,这个团体在 2001 年所募得的款项 99.3% 均投入到乌干达项目计划中。志工们与乌干达当地的 Kibaale Children's Fund (KCF) 一起工作,透过各种可能的方式协助当地的爱滋遗孤,帮他们找寻新家,就学与提供医疗上的关护。您可以到 http://iccf-holland.org 进一步明了该团体与项目进行的信息。
It is not only the money. The Charityware concept also helps to make people aware of the need of other people. If I would not have started this, few people would know about the project in Uganda. For many people it takes time to get used to the idea that there is more to life than making money and taking care of yourself. I have had reactions from people who could not afford to donate, but were moved by the concept. In some way it seems Charityware changes people a bit.
今日的 vim 具备的在功能上已强过原版的 vi 许多,以下是 Bram 本人在 2002 年所写的 "Vim, an open-source text editor" 一文中的摘录(ps:描述上有略做更动): 编辑的行文长度没有限制,允许 NUL bytes。可编辑任何档案,包含 binary 档案。支持多重的 undo 与 redo。支持多重窗口及缓冲器:可同时编辑多份文件,交换复制的内容。支持语法加强显示模式:对撰写程序掌握语法结构有相当的帮助。支持指令使用纪录(history)及指令自动补齐功能。支持删除或置入文字区块:用在表格编辑上。错误讯息解析:根据执行编译器的错误讯息,自动定位错误代码的位置。超级链接的在线说明:可迅速找到相关的辅助说明。支援 script:可自行扩展自己的需要。vim 在 6.0 之后又添增了自动折行、多行搜寻样式字符、支持 UTF8 编码。 使用需求往往会引导软件走向更实用的方向。坦白说,要不是因为写这篇文字,农夫自已也还不清楚 vim 做了那方面的功能拓展,因为长久以来自己都是以 vi 的观念在使用 vim。因此对 "多重的 undo 与 redo"、"多重窗口及缓冲器"、"支持 script" 这些强悍的新功能,居然浑然不知..真是草包罪过。 或许有一天,我该自称为 vim 一族....哈
lx
超级版主
等级: 24 - 炉火纯青
HP(生命值): 100 / 583
MP(魔力值): 240 / 1957
EXP(经验值): 35 %
Who im I
管理员
笨笨
等级: 30 - 举世无双
HP(生命值): 162 / 747
MP(魔力值): 422 / 3474
EXP(经验值): 88 %