第1章 文字处理:基础工作,别有学问
文字输入、文字处理是计算机办公的基础工作。虽然是基础工作,但大有学问。所谓输入法,实际是“三个部件”的组合;而提升打字速度,则要克服“四大障碍”。所谓输入法,实际是“三个部件”的组合;而提升打字速度,则要克服“四大障碍”。笔者最喜欢的输入法是极点五笔,但也曾经对一款早期的智能拼音输入法怀有深厚笔者最喜欢的输入法是极点五笔,但也曾经对一款早期的智能拼音输入法怀有深厚感情。而文本编辑器也是强手林立,在 Emacs与 Vim的传奇对决中,笔者站在了感情。而文本编辑器也是强手林立,在 Emacs与Vim的传奇对决中,笔者站在了Vim一边,它让文本编辑成为键盘上的舞蹈。
1.1 打字输入,别有道理
注释:1 原文地址:http://xbeta.info/input-text.htm。
打字是计算机应用中最基本、最普通不过的事。但越是平凡,就越难发现其中的道理,非要深思不可;思考得多了,才意识到其中的道理远超出预料。本节是一篇回溯性的文章,不仅从各色各样的软件应用回到基本的输入法,也标志了善用佳软博客在基本定型后的新一轮梳理。
本节的内容要点如图1-1所示。
图1-1
1.1.1 文字输入的赵氏三定律
之所以称为赵氏定律,是因为笔者有一位赵姓同学善于总结,提出了很多“赵氏定律”。现借其名,作为对他“无双年代”的纪念。
1.不相关定律
人的打字速度与输入法无关;人之成就、事之成效与打字速度无关。这是一个很不浪漫的定律、很无情的定律。要追求准确,可以改“无关”为“无必然关系”,但“无关”更有警醒作用。此定律推而广之,可以表述为:工作最好的人,并不是软件用得最好的人;软件用得最好的人,也并不是“用最好的软件的人”。也就是说,只有在明白目标、不妨碍目标的情况下,善用软件才是有意义的。换言之,执着的同时,莫忘反思,且能“放下”。
2.正相关定律
使用智能技术自动选词是应对重码的时兴方案,其准确率与语料库的大小成正比。
3.负相关定律
有人用五笔打单字,有人用智能 ABC 不调词频却可以记住重码的位置。这种情况下,词库越小,重码率越低。
定律一说的是,打字与输入法的关系不见得有多重要。定律二和定律三要结合起来看,也就是说,为了相同的目标,可以有复杂的或简单的多种解决办法,甚至表面上看起来完全相反的办法。
1.1.2 文字输入的三个部件
其实,输入法并不是一个准确的称谓。很多用户评价某某输入法的好坏时,可能包含了三方面内容(三个部件):输入法程序、词库、编码方案。
粗略一点说,这三部件应该分别由计算机、语言、文字三个学科的人员完成,才能做出最专业、最精致的产品。举例来说,王码五笔的伟大在于“编码”—既包括编码方案的设计,也包括投入大量精力的推广。这是此后一切五笔输入法的发端,而作为输入法的王码五笔,比起现在的极点五笔、小鸭、海峰、加加、搜狗、QQ 等五笔,则要落后不少。再如,搜狗和Google输入法的成功之处在于程序支持网络词库(实际上仍然是先下载到本地),还有搜索引擎汇总出的超大词库。
换言之,如果三者相对独立,各有专攻,用户就会得到更好的使用体验。因为编码基本就是五笔、二笔、双拼、简拼、音形结合,并且主流是拼音和五笔,所以不必过多讨论。仅就词库和输入法设想一下:如果大家的词库都采取统一的开放格式,可以互换的话,则输入法开发者就可以抛开词库,真正拼产品设计,比程序开发实力,做出更好的输入法,用户也不会为了词库而被迫选择不喜欢的输入法。比如,你可以选择小巧的拼音加加,而使用搜狗的大词库。这才是一个美好的世界,一个符合应用、数据、展现样式(可以理解成输入法的皮肤)分离原则的世界。
没错,以 XML 为代表的应用、数据、格式分离是一个伟大的原则,必会完全改变将来的世界。在那样的环境下,将不再需要关心选用Wordpress平台还是sina平台,也无须关注CSS 样式,而是只重在书写文字(XML)。读者无论是到http://xbeta.info阅读,还是通过 rss阅读,都可以选用阅读器提供的样式/版式,或第三方的样式/版式,或默认的样式/版式。这既让提供者免于做不擅长的事,更为接收者提供了自由选择的机会。我相信这样的原则会让世界更加美好。
由于输入法包含三个部件,因此,造成了分类较为困难,这导致本节开始的示意图很不全面。
比如,就输入程序而言,它应该是一个平台。比如酷极、自然码、极点五笔等,它们加载五笔,就是五笔输入法;加载拼音,就是拼音输入法。但因为拼音和五笔差异太大,所以多数输入法只局限于两者之一。这些输入程序中,有按Windows标准的输入法路线开发的,也有少数走EXE 外挂路线的,比如著名的酷极平台、默默无闻的猕猴桃输入法(极小巧,“主页”很个性化),它们的优点是不需要安装,适合在网吧和无安装权限的计算机上使用。
词库相对复杂或封闭的输入法,则会自行开发词库,以便于和程序实现最佳配合。这一类型不可不提到自然码,它大概是目前仍在坚持收费(但开始推出免费版)的输入法,它的免费版和其他优秀输入法相比完全不逊色。它的功能非常强大,支持全拼、双拼、自然码(音+形)、五笔,支持词输入、整句输入,支持分体专业词库……可以这样说,没试用过自然码,就难以想象输入法还能做到这个程度,它几乎可以兼容你的任何输入习惯。
1.1.3 广义理解输入法
不要局限地认为输入法就是IME(input method editor),即按下“Ctrl+Space”切换出的那个软件。广义的输入法是“从按键到屏幕显示之间的转换器”。
1.基于广义理解,一方面,你可以用输入法来做更多的事。
用输入法启动程序:极点五笔等输入法支持命令直通车功能,比如,键入notepad,则启动记事本程序。
用输入法填表单:把你的常用信息(比如手机号、地址、身份证号)存入词库,键入addr则输入地址,键入tel则输入电话号码,不仅更方便,也会更准确。当然,请注意个人信息安全。
用输入法更快地编写代码:为什么不把常用的代码串加入词库呢?至少我在编写HTML 文件或写blog时曾经这样做过,效率高多了。
用输入法输入英文/符号:把常用的英文单词、中文常遇到的半角符号设为自定义词,可以避免中/英输入切换,并且更为快捷。比如,我输入zytc就会在屏幕上显示Total Commander,输入sap就会显示大写的SAP。诸如段首空2格,①、②、③这样的符号也可以定义为一个词组,快速键入。
用输入法实现浏览器的网址缩写:没错,可以用输入法在浏览器地址栏键入xb,而显示的却是:http://xbeta.info。
2.基于广义理解,另一方面,更多程序都可以视为输入法,当做输入法来用。
Vim等高级编辑器的补全、缩写替换可以当作输入法。实际上,笔者只把在写blog 时用到的个别 HTML 代码定义到输入法中,其他在编辑 HTML 文件时所用的代码都定义在Vim中(详见Vim相关文章)。
还有,剪贴板增强工具的固定条目也可以帮助输入,比如 Ditto、AutoHotkey的替换、热字符串功能可以辅助输入;Office的增强工具也可用作输入法,比如MS Word的自动图文集、自动修正、固定词条等。
1.2 文字输入的一些经验
1.2.1 选用输入法的历程
笔者在大学一年级的“计算机文化基础”课上,正式所学的输入法为“阴阳码”,即二笔输入法的前身。等到输入法考试课结束后,才知道很多同学是用拼音输入法完成的,因为在对编码掌握不熟练的情况下,显然拼音更快。
那时并没有特别知名的拼音输入法,直到后来“中文之星”输入法的出现。但在很长时间内,因为笔者没有自己的计算机,所以,也没有惯用的输入法。值得一提的是,那时的拼音输入法种类很少,不同的拼音输入法之间也非常类似。
笔者本科毕业设计写论文时,因为要大量打字,并且有了固定的计算机,所以用了一段时间研究输入法。最初,用智能ABC 加笔画辅助码减少重码,后来改用微软双拼。用微软双拼整句输入的最好的状态是:闭着眼睛打很长一段话,然后再睁开眼睛修改很少几处错误即可—非常有助于保护视力。但那时的微软拼音有bug,经常导致死机,输入的内容会全部丢失,于是,又换到了智能ABC 的双拼。
这期间,自然码、考拉输入法(“紫光拼音输入法”的前身)比较热门,但笔者虽知其名,却并未实用。作为早期的双拼用户,笔者交替用“微软拼音输入法(双拼)”和“智能ABC(双拼)”的效率已经较高,不像全拼用户对输入法选择那样敏感。
后来,遇到拼音之星输入法,它兼容多种双拼方案,仅以 1MB 的大小就可以实现智能语句,于是笔者长期使用它(详见本书第 1.3.3 节“说说拼音之星输入法”)。
再后来,笔者认为谭码的重码少和每分钟 80 多字的输入速度仍不能满足自己完全无重码的高速度、要求,于是开始学习五笔输入法(详见本书附录“学习和使用五笔一周年之问答”),迄今已近十年。
从高阶的拼音输入方式转换到五笔输入法,还有一个非常重要的原因是:再给自己一个挑战。学五笔是一时的,用五笔是一世的。很短时间内,笔者就把几款五笔输入法换了个遍。后来,又有幸发现了“五笔爱好者论坛”,才完整地认识到了五笔世界的丰富多彩,并使用极点五笔至今。也就是说,善用佳软博客的文字,绝大多数出自极点五笔,早期为单字输入,后期采用小词库。
1.2.2 影响打字速度的四大障碍
注释:1 原文地址:http://xbeta.info/input-skills.htm。
普通人需要不断提高打字速度吗?尽管“打字输入,别有道理”一节已经提到,打字速度并非极其重要之事,但作为伴随一生的计算机使用技能,无论是从节约时间来看,还是从自我提升、自我挑战来看,不断提高打字速度仍有意义,笔者改学五笔的原因也正在于此。如何提高打字速度?这不是靠几个技巧就能解决的问题,而需要深入和系统的分析。
“记住!冲刺技巧只能让你提升几个名次:从1000名提升到990名。只有克服全程缓慢的障碍,才能提升你的境界:从平庸选手到优秀选手。”—— 一条被安在范· 巴斯滕名下的格言
上面的名言虽然纯属杜撰,但道理真实不虚。所以,要真正提高打字速度,请暂时忘记网上讲的各种技巧,先分析一下提高打字速度有哪些障碍。针对这些障碍,我们才能找到适合自己的、更快更好的输入方式。
让我们先分析一下“理想情况”!
我们认为最理想的打字状态是键入编码后直接上屏,既不需要考虑重码,也不需要确认(空格、回车)。比如,我在自定义的极点五笔下键入“zztc”就直接上屏Total Commander。对某些确定的重码,在能记住的条件下,也可以把识别码算作编码的一部分,成为广义的无重码。比如,在不熟悉的情况下,我键入f会得到“1.地2.土”,需要用眼睛查看结果再选重码,但在熟悉的情况下,就成了“f空格”=地,“f;”=土,实现了2键直接上屏。
假设在“键入编码、直接上屏”的“理想情况”下,所用时间为 1,则以下四种“非理想”情况,所耗时间将在3~10。
以下就是打字速度的四大障碍,如图1-2所示。
图1-2
障碍1:上屏错误,需要修改
障碍指数:10
毫无疑问,错误字词上屏后再行修改,不仅极度影响打字的流畅性,并且会耗费极长的时间。与理想情况相比,修正一个错误,包括删除前屏字词、重新(更加小心地)输入编码、找到正确候选项、按对应键将其上屏等环节,占用的时间可能长达理想情况的10倍。
障碍2:重码太多,翻页选字
障碍指数:7
如果出于某种原因导致重码太多,必须翻页才能找到所需字或词,也会严重降低打字的速度。
例如,你在第一次输入某姓名时,经常要从极多的候选项中选择一个字。这时,你甚至会和旁边的人分工:在众多候选项中,一人从前向后看,一人从后向前看。
障碍3:键入有错,修改编码
障碍指数:5
它和障碍1比较类似,只是发现错误更早,在上屏前就意识到了编码错误。无论是何种原因,键入了有误的编码就不会得到预期的字词,当然这也反过来帮助用户发现了错误,可以及时进行修改。修改时,可根据不同情况决定,是一直按着BackSpace 删除所有编码重新输入,还是用光标键只修改错误的地方。不同情况下会有不同的最佳方案。
障碍4:少许重码,只须本页选择
障碍指数:3
高重码方案(如拼音输入法)若采用了智能技术,或者本身就是低重码编码方案(如五笔、郑码输入法),则重码数量会大大减少,通常在第一页前几项就可以找到所需编码。这种情况下,也需要眼睛介入,但选择速度比翻页选择要快很多。但无论按下何种选择键(数字键或是其他重码优化键),只要不是能被记忆的固定位置,就仍比直接上屏慢很多,往往相差2~3倍。
如果我们闭上眼睛,想象一下打字过程,并把每一次击键、每一次上屏都变成一个音符,则耳朵会带给我们非常直接的感受:打字高手敲成的音乐,节奏快而流畅,并且极其均匀;而打字缓慢的用户敲成的音乐,如果也算是音乐的话,则最大的问题是不连贯。
1.2.3 输入法的设置建议
删除那些你几乎不使用的输入法吧。比如,我的计算机上只有极点五笔和为别人偶尔使用才保留的智能ABC。当然,要考虑到这些输入法可以输入GBK 或更大的字符集。
不建议把中文输入法设为开机默认,对体积庞大、性能不稳定者更是强烈不建议。性能低下的老机器非常不推荐把搜狗输入法设为默认。
如果有多种常用的输入法,则应设热键。设热键有技巧:①先要利用默认热键。除了第一常用放在“Ctrl+Space”的位置(即第一位)外,很多人不知道第二常用输入法可以放在最后一位,用“Ctrl+右Shift”一键切入。这一点在与他人合用计算机时尤其有用,为尊重别人可用“Ctrl+Space”,又可自用“Ctrl+右Shift”。②对于更多输入法,可以在输入法设置中分别指定“Ctrl+Shift+数字”这样的热键,比如,有时笔者也会在别人的计算机上,把“Ctrl+Shift+5”指定为自己习惯的五笔输入法。
1.2.4 输入法管理利器:IMETool
IMETool软件(主页:www.mympc.org)是Silence出品的免费、小巧、强大的软件,是目前功能最全面的输入法管理利器。软件主界面如图1-3所示。
图1-3
IMETool的主要特色功能如下。
动态调整输入法顺序而无须重启。
突破Windows限制,任意设置输入法热键。
可以切换“高级文字服务”和“输入法指示器”两种工作模式。
可以修复常见的因注册表错误引起的输入法混乱问题。
可以从注册表中卸载输入法。
体积小巧,仅一个121KB 大小的文件,无须安装。
IMETool的使用技巧包括如下方面。
新安装输入法后,快速调整到所需位置。
快速为某输入法设定热键(我的常用方案:极点五笔=Ctrl+Shift+5)。
删除某些顽固的输入法。
1.2.5 把常用字符串设为自定义词组
任何常用的字符串都应定义为词组,简单列举如下。
自己的标识及信息,包括全名、网名、ID、E-mail、地址、电话号码、单位名称等。
常用字符串:如签名(某些输入法支持换行)、网址、当前日期、当前时间。
专有名词:较长的软件名称(如Total Commander)、大小写易出错的词或软件名称(如7-Zip、Firefox)。
需要匹配的成对符号。比如《》、“”。再进一步,极点五笔支持移动光标,即输入zk后,会得到(),并且光标位于括号内部。
特殊符号。比如对号√、★、①、②等。比较特别的是,为了节省空间,有时要在中文内使用半角冒号,因此,定义按下zM直接上屏“:”,而不用切换全半角。
如果你手写HTML 源代码,也可以把一长串源码定义为一个词组,如键入link得到<a href=“”></a>。
自定义词组时注意不同输入法的限制。比如,小鸭五笔的词中不能包括半角空格;极点五笔的空格用$20 表示;而小小输入法则提供了最为丰富的参数:$_表示空格,$|表示光标定位,$LAST 表示上一次的输出等变量,$RIQI表示农历日期……
1.3 推荐几款喜欢的输入法
1.3.1 一些优秀的输入法及资源
为了文章完整,有必要加入此段。但实际上,目前优秀输入法众多,且大多免费,比如拼音输入法之Google、Sogou、紫光、加加、微软拼音等,五笔输入法之极点、海峰、加加、小鸭等,重复罗列实无必要。所以,说点其他的,尽管不实用,但有历史价值的。
每台电脑必含而几乎很少有人会用(近几年又会有不少新用户)的郑码输入法,是《英华大词典》主编、著名文字学家郑易里先生的研究成果,详见郑码网站。我无力评论它和五笔字型哪个更“合理”、“科学”。但此为学者之作品,所以在专利、成果、与微软合作方面很成功;王永民老师则既做研究,又做开发,还做大量推广,让五笔字型在“不规范”的帽子下仍能占据形码的绝对市场。
形码领域比拼音领域有更多的痴迷的开发者,尽管他们并无太大名气。
早期,唯一能在五笔和拼音中都属精品的是加加输入法,包括拼音加加、五笔加加。这是精简、高效、易用的经典之作,因而能在开发者放弃之后,仍不断有后续公司和个人进行改善。而 Easycode 用户在无源码的情况下,利用超强汇编能力改进的“五笔加加plus”更是可贵。加加输入法的创造者是廖恒毅,入选了《程序员》杂志评选的“影响中国软件开发的 20 人”,搜索“《程序员》专访:廖恒毅”可以获得更多信息。读了这次访谈就会明白,为什么开发者会放弃有“行云流水般的输入感觉”的拼音加加;也会明白,为什么有些优秀国产软件没有中文版,或者不再更新。
当然,后期的搜狗与QQ 同时发力,陆续推出的拼音、五笔输入法,都算优秀的输入法。
五笔爱好者论坛是学习五笔的好地方,更能结识优秀的开发者。人以群分,确实如此。五笔世界中发生过比拼音输入法领域更多的故事,让我为某些人惋惜,也为其中凸现出来的人而高兴。
五笔爱好者论坛的气氛一直很好。用户会对有些软件或开发者产生感情和超出技术层面的信任。比如,有网友说Total Commander(原版,或张学思版,或shanny版)、极点五笔报病毒,笔者敢说,99.9% 的可能是非官方下载(被人改动)或杀毒软件的误报。也就是说,开发者的品质、技术、责任心和软件质量一样重要,甚至决定了后者。
杜志民有语:己所不欲,勿施于人;己所欲,勿强施于人。
早期输入法有很多是共享软件,但后来因为越来越优秀的免费软件出现,共享转向了免费。尽管在此过程中,出现过一些恶意捆绑的不良插曲。
1.3.2 极点五笔:笔者最喜爱的五笔输入法
注释:1 原文地址:http://xbeta.info/freewb.htm。
1.极点五笔的简单介绍
软件名称:极点五笔。
极点五笔是我最喜爱的五笔输入法,也是很长时期内笔者计算机上唯一的输入法。善用佳软上发表的所有文章均为极点五笔录入,长期用86单字输入,后来因为移动设备的需要改用词组输入。它实用、小巧、稳定、功能全面,完全免费,实属输入法之精品。所以,于公于私,都应该介绍一下极点五笔。
要描述一款输入法的优点是非常困难的。我只能说,极点让我用得非常舒服,其开发者杜志民在论坛上的言行也让我很佩服。如果需要,我愿意为极点五笔付费或捐赠。
极点五笔是免费、无捆绑、无插件、无广告的五笔拼音输入法软件。用极点五笔,“会用五笔打五笔,不会五笔用打拼音”。极点 unicode 版除具有微软五笔输入法的稳定与兼容性外,还有如下特色。
错码后可以继续输入。
会五笔打五笔,不会五笔可以打拼音。
可以造带标点的词组。
标点可以顶字上屏。
可以五笔拼音互查。
可以随时调换词组次序。
全面支持GB18030标准,“镕”、“瞭”、“啰”、“堃”等字轻松输入。
与网络游戏有较好的兼容性。
兼容最新的Vista32及IE 7的保护模式。
2.使用极点五笔的技巧
我长期使用极点五笔5.2、单字输入、86编码、alOn9编写的日期插件v0.0.0.2,简介原因如下。
极点五笔 5.2 版:一是因为习惯了这个版本,没觉得有需要升级的地方;二是该版本的词库仍为透明的.txt文件,且自造词长度较大,而后续版本 6.x 版、7.x 版自造词长度有限制(有资料称“词条最多128个汉字”)。比如下文的zcx自造词,在6.x版中就不能实现。另外,没感觉有什么换的必要,所以一直沿用这个版本(补充:后来因为稳定性原因,在极点五笔十周年纪念版发布时升级到了最新版本)。
打单字(单字输入):是因为几乎无重码的感觉太好了!但不是采用极点五笔的单字模式(因为会导致date、time、自造词都不能用),而是用单字库。因为极点五笔词库是开放格式,所以用文本编辑工具(如 Vim)打造单字库很方便(补充:后来因为在手机上击键太慢而改为词组输入)。
86编码:反正要么用86编码,要么用98编码。我初学的是86编码,就一直沿用下来了。
新日期插件:极点五笔原有的日期功能无法实现一位数的月份前加 0,所以改用第三方插件。
常用的内容定义为词:比如 E-mail地址、网址以及每篇文章最上方的“作者/版本/出自”等信息。回车上屏的是英文。
1.3.3 说说拼音之星输入法
注释:1 原文地址:http://xbeta.info/pinyin-star.htm。
1.简介
软件名称:拼音之星。
官方主页:http://www.zuaa.cn/pyzx.htm。
软件的质量并不总是与名气成正比的。正因如此,我才会去主动寻找和试用软件,而非按知名网站的下载量排名去选择。拼音之星输入法就是一款名气不太大,用户也不算多,但功能和质量方面(尤其在早期)算得上顶级的输入法。
拼音之星输入法的设置界面如图1-4所示。
图1-4
2.对拼音之星的回忆
一位网友在文章评论中提到了拼音之星输入法,引起了我的回忆。在这里为谭亚军先生开发的拼音之星输入法记述一些回忆片段吧!
拼音之星输入法是我使用时间最长的主力拼音输入法。奇怪的是,我在使用它的过程中,竟然没发现身边有其他用户。
喜欢一款输入法时,未必能说清楚它具体强大在哪里,最重要的就是一种感觉!拼音之星给我的感觉就是功能多、体积小、手感好。它当时的口号是“一张软盘能放下”,并可以实现多种双拼方案、整句输入。它自定义符号、本身预定义的特殊符号也非常好用,这种功能在当时是非常领先的(我主要在 1998 年~2003 年使用,后来就换到了五笔输入法)。
它收费却很少宣传。不免费的软件却能让人尊敬,也是一种境界啊。当然也或者是它大量宣传的时候我并不知道(有篇文章提到它宣传太多以致让人反感)。我想不大肆宣传是因为谭先生不靠输入法吃饭,本身有稳定工作,研究输入法仅是业余爱好。谭先生认为物有所值,所以不免费;自信并不在意收入,所以也无须大打广告。
我也曾使用它的破解版。试用版本是有使用期限的,而我当时尚无足够的正版意识,且它的注册价格也不是很便宜(好像100多元)。更令人为难的是它按机器码注册,当时在学校使用计算机不完全固定,所以就一直用破解版。尽管在使用中,我向谭先生提出过一些建议,也坦承过此事,但在这里还是要再次道歉。
它也曾经有乱码。因为拼音之星是 exe 式,非标准 ime,所以有时有乱码,但我还一直在用着。还有,后来发现它与当时的netcaptor有冲突,会导致死机。尽管如此我也未放弃,而是摸索出了解决办法。这又反过来证明了它的吸引力。
3.其他补充
开发者好像曾经说过这样的话:①如果没钱可以不注册(不注册也无任何功能、期限的限制),甚至找个破解来用也可以;②不降价,批量买也不降价(不过可以赠同名的授权),因为它值这个价格。
在考虑是否要学习五笔时,我测试了当时的输入速度。用谭码整句输入一般文章,约 80 字/分钟。现在用五笔单字,未必能有如此快速。当然,五笔单字无重码的感觉还是很舒服的。
2007 年 10 月,尽管已经使用五笔输入法多年,但在更新此文时,我还是试用了一下拼音之星最新的v6.6免费版。安装之后,完全不做任何设置,直接输入,发现其自动识别能力令人吃惊:全句只有一个误识,原因应该是开启了“模糊音识别”,另外它竟然能正确组出“善用佳软”,我原本认为此名称会是拼音输入法的杀手。
最后,晒一下拼音之星默认的皮肤,如图1-5所示。
图1-5
1.4 文本编辑神器Vim
2005年5月,我开始使用Vim文本编辑软件,此后渐入佳境,原来因版权自律而放弃使用UltraEdit的遗憾一扫而空。并且,在Vim的使用中,我才体会到什么才是真正的编辑利器。在善用佳软或其他论坛发文,我都是先在Vim中输入文字,在方便高效地编辑好格式后,再贴到网上。而我的通讯录、记事、读书笔记、工作记录也是在Vim中完成的。包括一些文档、数据的处理工作,让Vim预处理一下,也会提高不少效率。总结为一句话就是,自用Vim以来,对它迷恋日深,几乎要超过Total Commander。但是,我在善用佳软上大力推荐“用IrfanView/XnView代替ACDSee,用7-Zip代替WinRar/WinZip,用GIMP 代替Photoshop”,但并未推荐“用Vim代替UltraEdit”,原因何在?并不是说Vim不能胜任此需求,恰恰相反,如果说IrfanView等替代品比原共享软件还有些差距,Vim则远胜UltraEdit。不推荐如此代替的唯一原因是:Vim对初学者有点难。
但今天笔者为什么仍面向普通用户大力推荐 Vim呢?其一,是编辑选定了本文题目,要向大众宣讲Vim和Emacs,这种勇气鼓舞了我。其二,我担心已经发表的两位高手的文章—王垠之“Emacs是一种信仰!世界最强编辑器介绍”,Dieken 之“程序员的编辑器——Vim”会吓住一些对Vim/Emacs产生兴趣的人,所以要做些修正。
因此本节内容主要有两部分。一是帮新手体验Vim。这部分有些像实验教程,多用实例,且行文风格尽量傻瓜化,以便于新手(包括以前从未听说过Vim的)可以按照本书一步步体验Vim。二是介绍我日常应用Vim的情况,即Vim如何便利我的日常工作和生活,而非局限于编程。
1.4.1 Vim简介
我认为,Vim是一个超级强大的文本编辑器。它和 Emacs 是一个级别,比UltraEdit、Editpad、EmEditor要高一个(至少半个)级别。如果你有兴趣,不妨在网上搜索“程序员的编辑器——Vim”一文,以便于对 Vim有更详尽全面的理论认识。
要点1:Vim及其前身VI历史悠久,诞生于1976年,可能比多数读者的年龄都大。经历了几十年的考验和发展,值得信赖。
要点2:Vim有模式。通俗地做一下对比,Notepad无模式(或称为只有一种编辑模式),你按下j,就是在正文中输入j;要保存,就要Ctrl+S;要下移一行,就要按↓或用鼠标。而在 Vim中,打开一个文件后,并不处在编辑模式,而是 Normal模式,此时你按j,Vim并不认为你要在正文中输入j,而是代表光标下移一行。此时按i键表示进入Insert模式,即编辑模式(notepad的模式)。在编辑模式下按Esc键退回Normal模式。Normal模式下按“:”键进入命令行模式,用于输入较复杂的命令。比如“:w”代表保存文件,“:e a.txt”代表打开文件a.txt,即Vim可以不用鼠标、方向键、菜单、Ctrl键、Alt键发出命令。因此,使用中切记进入正确的模式:按Esc键到Normal模式;Normal模式下按i键到编辑模式;Normal模式下按“:”键到命令行模式。再说明一点是:文中“:”打头的是命令行模式。
要点 3:复杂对抗复杂。Vim有的命令行很吓人,长长一串字符恍若天书。实际上这些貌似复杂的字符串,无非是一些简单命令的组合而已。借助于此,Vim用户可以实现非常复杂的需求。如果你没有这样的需求,就无须理会它们。
要点 4:一能百能。这一点是 UNIX 或命令行风格软件的显著长处,使用之后可以深刻体会。下文尽管有一些例子,但它运用之妙、存乎一心的感觉,仍未能充分展示。这里先打个比方,如果Windows下某软件号称能炒菜,那意味着你点一下按钮,菜就做好了——这就是易用哲学。至于到底怎么做,你是没有发言权的,而是由软件开发者固化的。而如果Vim说能,那它就是有一个“炒菜”命令,你可以把这个命令与原有的“原料”、“数量”、“火候”、“风味”、“灶具”命令结合在一起用,甚至在它前面加上“买菜”、“洗菜”,后面加上“装盘”、“洗碗”,做成一个自动脚本,在合适的情况下自动执行。
要点 5:无限灵活,个性由我。你只要有具体需求,Vim几乎都能满足。因此不同人的Vim使用习惯是不一样的,即可以把下载的Vim配置成自己的Vim。
就此打住,开始体验之旅吧!
1.4.2 下载和安装
Vim(软件主页:www.vim.org)是跨平台的。在Windows下,我们用的是gVim for Windows版。这里讲解使用的是7.0版,下载包约8MB,完全安装后约20MB。
如果你觉得文件太大,你完全可以把不用的文件删除(包括帮助文件),精简后的体积可以不到2MB。或者,仅下载一个gvim.exe(1.5MB)就能运行。但对于第一次使用,建议全部按默认项安装,这样才能达到本文中预想的结果。
在安装过程中,基本上一直单击 Agree、Next 按钮就行了。我通常是装在d:\program files\Vim下。安装成功的界面截图如图1-6所示。
图1-6
1.4.3 Vim体验之旅
体验1:初见界面
安装完成后,按提示打开README 文件,你将看到如图1-7所示的界面。
图1-7
接着可以自行打开 Vim桌面的快捷方式,也可直接运行 d:\program files\Vim\Vim70\ gvim.exe,你会看到如图1-8所示的界面。
图1-8
什么?难看?土?我第一次见到它也是这种感觉,现在却只觉得亲切。
再有一点,你有没有奇怪它是中文界面?难道我给你下载的是汉化版?会不会捆绑流氓插件啊?你如果真这样想,我只能叹息无语了。
体验2:试读HTML
请找个简单的网页保存为html,比如test.html,然后用Vim打开它,结果可能如图1-9所示(这里用的网页是“善用佳软”上的网页)。
图1-9
平淡无奇,是吧?因为它是一个标准的Vim界面,并且是一个性能优先、视觉效果不重要的界面。无妨,请进入命令行模式(就是按一下冒号,注意是英文冒号“:”),注意到最下面一行的变化了吧。再输入sy on,然后回车。是不是有颜色了?它看起来应该如图1-10所示(抱歉,印刷效果又把颜色转为灰度了)。
图1-10
重要提醒:为简化起见,下文将用“:sy on”表示连续的几个操作(请先确认处在Normal模式,如不确认,请按几次Esc键),即先按“:”键进入命令行模式,再输入sy on,然后按回车键。
补充说明:sy表示加亮,on当然是打开。:sy clear表示取消加亮。
体验3:改头换面
体验Vim就要按Vim的思路,所以我们要把gVim改回Vim的本来面目。
对了,如果你认为它的界面很“土”,应该更要多看一眼它当前的样子,因为在下面的操作后可能会更“土”!
执行如下命令:
:set go=
这时的Vim应该如图1-11所示。
图1-11
不要大惊小怪,不就是菜单和工具栏不见了嘛?Vim中是不应该用到它们的。
补充说明:set表示一般性设置;go是gui option的缩写,就是界面;等于空就是什么都没有。
再输入半条命令(先不要回车):
:colo ev
然后,按一下 Tab 键。是不是自动补全为 evening 了?Vim是非常聪明的(但是不会像微软Word那样“自作聪明”)。
然后你回车,看到了什么?如图1-12所示。
图1-12
天色全黑了?没错,现在是evening嘛。
补充说明:colo就是设置调色方案。Vim自带了近十种调色方案,当然你还可以在网上下载更多,或改编出自己的调色方案。你可以在敲完:colo(加一个空格)后就连续按Tab键,选择不同的配色方案来体验一下。当然,evening是比较经典的一种,我一直就用它。
体验4:准备并打开范例文件
为简化起见,请下载善用佳软博客中的test.txt并保存为d:\test.txt。当然,按图1-13中的文档长度自己准备其他.txt文件也可以。然后,在Vim中输入半条命令:
:tabneWd:\t
输到这里后不要回车,按一下Tab键,Vim会自动补全为test.txt的。如果不对,再按几次Tab键,直到正确为止,然后回车。
你会看到Vim打开了test.txt文本,并且是以多页签(tab page)的方式,如图1-13所示。你可以单击各页签在打开的文件中间切换(高手有更方便的键盘命令做法)。Vim6.3还没有此功能,当然这并不意味着Vim的用户没办法享受多页签的便利。Vim有上千个插件,下载一个相应的插件后就可以了。面对多页签风格的流行(IE6→Maxthon→IE7),Vim7.0也新增了此功能。
图1-13
我喜欢这种简单的页签。如果你认为这种页签太难看,可试一下:set go=e,这个命令可以得到有立体感的页签效果,如图1-14所示。
图1-14
体验5:统一格式,修改viMrc
上面所操作的各种命令,都是对Vim的设置。把它们写到一个_Vimrc文件中就成了默认选项。每个Vim用户的_Vimrc文件都不一样,因为每个人的需求不同。
为了保证下面的操作得到预期的效果,请到“善用佳软”博客对应的博文中,下载笔者提供的_Vimrc文件。然后依次执行下述操作。
(1)关闭所有的Vim。
(2)找到你的d:\program files\Vim_vimrc,复制一份存档。
(3)用任意文本编辑器(Vim或记事本)打开_vimrc,用“善用佳软”博客上对应博文中附1的内容替换它,并保存。
(4)重启Vim。
注:这并不是标准做法,但对Windows用户来说是比较方便的做法。
体验6:打开test.txt
再次就模式进行提醒:Esc到Normal;Normal下按i到编辑;Normal下按“:”到命令行。运行Vim,并在命令行执行e d:\test.txt
接下来,我们把此文章用命令语句排一下版。如果你认为可以逐行手动排版,请把此文件复制到10 000行的长度再发表意见。
体验7:分段并保存
原文没有分段,观察一下,发现可以在“以下是……”前面加回车,因此可以敲命令:% s/以下是/\r﹠/gc。输入后,界面如图1-15所示。
图1-15
此时提示, ,请回答y或a。如果回答y,则替换当前一个;到了下一个,Vim还会再问你。所以,你回答几个y后不妨一a了之,全部替换。
命令说明:该命令的作用是把“以下是”替换为“\r﹠”,\r表示回车,又表示被替换的部分,这里即“以下是”。%表示全文查找替换,s表示替换,s的用法是形如s/a/b,即把a替换为b。命令最后结尾的/gc表示一直替换,并且要用户确认。
看一下文件,你或许想,空2行可能更好。很简单,再重复一下刚才的命令就好了。不过,对强大的Vim来说,无须笨笨地重复输入上次的命令。在命令行按下:后,再按一下↑键(向上的方向键),看到刚才的命令了吧?直接回车,提问时输入a,任务完成。
如有变化,请及时保存,命令是:w。
当然,你也可以按Ctrl+S。但Ctrl+S 之所以有效,是因为我在_Vimrc中做了定义:当按下Ctrl+S 时,系统执行:W动作。因此,你完全可以定义其他热键,并把它映射到:w。
体验8:继续编辑
首先删除“坚持”两字,很简单,只要输入 gg2x 就行了。为了看效果,你可以先输入gg,这时光标移到文章头。再输入2x,这时删掉了2个字符。
再一次体验Vim的神奇:比如输入5x,于是5个字符消失了。如果这5个字符是要保留的,没关系,你按一次u键,就回来了吧?
再按一下组合键 Ctrl+r,是不是又没了?再按一次 u 键,是不是又回来了?没错。u和Ctrl+r相当于(注意:不是等同于)Windows的undo和redo。
再试一下dd。是不是整行没有了?没关系,按u键回来就行了。
再试一下3dd。一下子删除了3行!没关系,按u键回来。
再来一个dG,哇,全文都没了?!仍然按u键回来。
体验9:更多编辑
任务a:把每一句分为一行,即达到如下效果。
以**为荣、
以**为耻,
解决:如果你记得上面的替换命令,就会想到,可以用2次替换(“为荣、”换为“为荣、”加回车,“为耻,”换为“为耻,”加回车)。但这两次替换在 Vim中完全可以一次完成,即用正则表达式,在“为”及后面2字符(“荣、”或“耻,”)后加入回车。怎么表示呢?
:%s/为../﹠\r/gc
看一下高亮,没问题,直接a,效果如图1-16所示。
图1-16
哇,是不是很壮观啊?没觉得?如果是一千行一万行呢?
任务b:把行末的标点去掉,即“荣”后的顿号和“耻”后的逗号。
解决:办法太多了,仍可以用替换。但此处还是展示一个新功能—列操作。
安全起见,按两次 Esc键,再输入 gg$,这时光标应该到了文章第一行最后一个字符,即顿号上。
再按组合键 Ctrl+v,注意一下状态栏是否提示有“可视块”字样(请确认你是采用了善用佳软的_Vimrc文件,如果没有,请试一下组合键Ctrl+q)。
再输入15jx,是否标点全部删除了?因为15j表示向下选中15行,x表示删除。
任务c:错落有致。
操作:这次演示一下宏的用法,请严格按本教程操作。
先做一下确认:输入法没有打开,按Esc键到Normal状态,输入gg让光标到文首。
输入qa命令表示开始录制宏,宏的名字为a。
再按Shift+>>(表示按住Shift键,再连按两下>,再放开Shift键。此时第一行应当向后移动一个Tab距离)。
再按j^(此时下移一行,并将光标置于行首)。
再按Shift+>>,再按Shift+>>(即第二行向后Tab两下)。
再按j^(下移一行,并将光标置于行首,为后续操作做准备)。
再按q(表示宏录制结束,Vim会提示记录完成)。
这样宏录完了,可以用了。
再输入@ a(执行宏a),看到了效果了吧?宏执行了一次,即 3、4 行成功了。还剩下 6 段,但是你不用输入 6 次@ a,而是只要输入“6@ a”就行了!结果如图1-17所示。
图1-17
太神奇了!回放一下?先输入 u,再输入一次 6@ a。既然可以6次,当然也可以千千万万次!
补充说明:高手使用Vim是千变万化的。上面的前2个操作(分行+删标点),完全可以合成一个:% s/(为.)./\1\r/gc;或再把第3个操作(错落有致)融合到前一个操作中。
体验10:自由体验
体验光标移动:请随意按几下j键和k键,看看反应;再多按几下l键和h键,看看反应;然后,当你的光标在英文时,请按几下W键和b键。
对了,gVim的每一种功能,都有无限可能,因此,你也可以在上面几个按键前加上数字,比如9W2h,看它的反应。
体验自动补全:快按 i吧,到目前为止还没写过字呢!为简单起见,先直接把鼠标放到中文的下一行,把Eight Do's and Eight Don'ts输入一遍—但是,输入一个E,先别动!按Ctrl+p是不是自动补全了?
体验大小写(每次操作后,都用u恢复原状),试一下g~~、guu、gUU 和g??。(g??后可以不按u,再按一次g??也能恢复原状)
神奇吗?这还是Vim功能的单个表演,真正的高手是把它们组合在一起,完成他们独特的编辑需求的。
体验11:语法高亮和折叠
此部分讲起来太复杂。如果你有使用其他编辑器的基础,如UltraEdit,会有助于你理解。但Vim在此方面的强大灵活,是UltraEdit难以望其项背的。
仍然是用我们编辑的原文件,请到善用佳软博客对应博文中,下载 test2.txt和tx1.viM文件,并保存在d:\prograMfiles\Vim\Vimfiles\syntax文件夹中。
用Vim打开它。比如要打开d:\test2.txt,请在Vim中输入:tabneWd:\test2.txt。平平无奇是吗?这是因为Vim并不知道这个文件要加亮。键入一个命令:setf tx1,这就相当于告诉Vim此文件的类型是tx1,所以就要按照刚下载的tx1.viM进行高亮和折叠。
此时你会发现test2.txt完全折起来了,如图1-18所示。如何打开?你可用鼠标点最左边的+,当然,也可以用命令zr或zR 打开(zR 打开全部;zr打开当前;zM折叠全部;zm折叠当前)。打开后,看到高亮效果了吧。可以对文字设定前景色、背景色、粗、斜、下划线风格。
图1-18
体验12:加密文件
文本文件打开最快,编辑起来最容易,并且在Vim中查找非常方便。因此,我用它来记日记,并做成通讯录。但是安全问题怎么办呢?很简单,Vim本身即可加密(当然解密也要用Vim)。在上述打开的文件中键入:X(是大写X),Vim就提示你设定密码,安全起见还要求确认一次,然后保存(键入:w)。把 Vim或此文件关闭,再打开时,就要输入密码了。只有你输入正确的密码,才能看到正确的文件。
1.4.4 Vim应用实例
Vim和Total Commander一样,都被我设定为开机自动运行的程序,其应用不可胜数。
比如,通讯录管理,我未用任何其他软件,只用 Vim管理一个 address.txt。它可以实现:快速启动(我在Vim中定义了书签,键入'A 就会打开),加密(用Vim的:X),超强搜索(无须多说),分组折叠(fold),E-mail和电话号的高亮显示(自定义语法文件)等。
再比如,我会用Vim来辅助Word、Excel、Bbs发文、安全删除文件、制作精简的五笔词库等。具体可参见博客相关文章“我常用的Vim功能”,“活学善用gVim,提高工作效率:实例篇(合集)”,“用gVim打造个性化记事本”等。
图1-19所示是我的个性化txt示例。
图1-19
1.4.5 小结
这些文字写得比最初计划的长很多,但仍感觉很多非常优秀的功能没有提到。比如,用Vim写博客文章,因为有插图,所以用了HTML 格式。在插入图片时,我只要输入img,Vim就会自动换为“﹠lt;img src=:﹠gt;”,并把光标放到两个引号中间,以便于我输入图片名称。我输入lnk后,Vim会替换为“﹠lt;a href=:﹠gt; ﹠lt;/a﹠gt;”。当我想看一下效果时,我只要输入:! g:\study\it\pconline\Vim\xbeta-vim.htm,它就自动在浏览器中打开了。而这一个长长的路径,因为有了自动补全和命令行历史,也非常容易输入。而当一些url还未确定,需要标注时,我就用一个'1,Vim就会以醒目的红色块标出来,一目了然。而下次再打开此文件,它还会记得我最后编辑的位置。
在用 Vim之前,我曾试过几十种 pad 软件和 Editor软件,包括长期使用过的Editpad,也包括曾经比较精通的 UltraEdit,还曾经测试过 EmEditor、EditPlus等。但用了Vim之后,我不再关心Windows世界中成千上万的编辑器。因为使用它们的逻辑是“如果有新需求,只能等软件升级或换一个软件”,而使用 Vim的逻辑则是“如果有新需求,请做个性化配置或下载插件”。
Vim在手,夫复何求!
最后,向Vim所代表的追求卓越、开源共享的精神致敬!并希望有责任感的用户逐渐减少盗版!
1.5 Vim进阶使用技巧
1.5.1 VOOF:Vim实现带折叠双栏树状文本管理
注释:1 自v2.0 开始,VOOF(Vim Outliner Of Folds)改名为VOOM。
Vim加装VOOF插件后,实现了带折叠的双栏2 树状文本管理,为我几年来的寻找画上了近乎圆满3 的句号。只须在txt文本的标题行增加{{{1、{{{2 或其他自定义的简单标识,就可以利用VOOF生成目录树,与正文分居两个窗口,实现光标点击跳转,以及对节点的层级、顺序管理。换言之,VOOF让txt4 成为最通用的资料库,让Vim成为最方便的个人信息管理软件。
注释:2 关于双栏树状结构,我最早是利用UltraEdit的function list实现长篇文本文件的目录导航的,后来转到Vim后,一直试图用tag、folding 来模拟此功能,但都不满意。对于较少使用高级文本编辑器的用户而言,双栏树状结构的典型例子是MS Word 的“文档结构图”。
注释:3 所谓“近乎”圆满,是因为Vim 并不适合处理太大的文本文件。当然,这个大小是相对的,与硬件配置高低及Vim 激活的功能多少有关。而VOOF 处理长文本也会较占资源,主要是扫描正文生成Outline。VOOF 开发者在2002年的旧电脑(1.6GHz Pentium 4 Mobile)上,发现附带的calendar_outline.txt(3.2 MB, 56527 lines, 4160 headlines)会在更新后有明显停顿(小于1 秒)。但要说明的是:若仅阅读,跳转仍然流畅;减少标题行能大幅度提高效能。总之,我相信当前情况下,10MB 的文本文件,上千个节点是可以正常使用的。
注释:4 关于纯文本资料管理。文本文件是最简单、最基本的文件格式,很多人对它情有独钟。通过软件为长篇文本文件增加目录功能,一直是某些开发者和用户的梦想,为此,有了“超级小巧的5 款免费树状笔记软件”。
1.VOOF 界面预览
图1-20是善用佳软使用Vim VOOF 的实际截屏,从中可以看到如下特点。
图1-20
两栏。
左侧目录可折叠/展开(正文也可以折叠,本例未采用)。
点击目录可实现正文跳转。
标题高亮。
2.安装VOOF
VOOF 插件的安装与使用极为简单,有基础者可以略过本段。步骤如下。
(1)到Vim官方网站 VOOF 主页(http://www.vim.org)下载最新版。
(2)解压到Vim安装目录/vimfiles/下。
(3)重启Vim。
(4)打开自带的示例文件simple_outline.txt,可能位于x:\Program Files\vim\vimfiles\plugin\VOOF_11。
(5)在命令行模式键入(注意大小写):Voof并回车。
如果顺利,现在就能看到左侧的树状目录了。如果不顺利,很可能是需要Python支持。
3.VOOF 与Python
VOOF 之所以基于Python,完全是出于效率。Python扫描文本正文并发现fold marker的速度,大约是Vim脚本的10倍。开发者在帮助文档的“Why VOOF uses Python”一节,给出了详细的测试代码和测试结果。
VOOF 需要Python,因此需要两个条件:①gvim.exe支持Python;②系统中安装有对应版本的Python环境。
条件①通常具备,因为官方的gVim7.2默认支持Python v2.4。因此,系统是否安装有Python v2.4就成了一件重要的事。如果你已经安装了其他版本的Python,也可自行编译对应的gVim,或访问网址 www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries下载。但需要说明的是,目前 VOOF 支持的 Python 版本为 2.4 至2.7,不包括v3。
为了这样一个插件而安装Python,对普通用户来说是否值得?这是一个见仁见智的问题。我不做程序开发,安装JRE 是为了FreeMind,安装.NET 是为了Evernote v3.5,安装 Python 是为了 VOOF 与 UltiSnips,安装 Ctags、taglist 是为了TxtBrowser……
4.VOOF 基本操作
鼠标方式:Vim并不排斥鼠标操作。如果想用鼠标操作VOOF,则它与类似软件并无区别,无须解释。
键盘方式:Vim的长处还是键盘操作。要点阐述如下。
基本操作之Tab:在左右两个窗口之间切换焦点。
基本操作之跳转到目录:在目录树侧,可通过↑、↓键来打开正文的相应位置,用→、←键来展开/折叠父子节点。
基本操作之节点:在目录树buffer中,如下快捷键可用。i I a A 是修改当前节点标题行。<LocalLeader>i、I是在当前节点前、后插入新节点(LocalLeader默认为\,也可自定义)。Ctrl+放向键可认下下移动节点(调整顺序)、左右移动节点(调整顺序、左右移动节点(调整级别)。dd、yy、pp分别可以删除、复制、粘贴节点。
5.高级使用:改进VOOF
(1)更快捷地调用VOOF。
默认情况下,需要键入:Voof回车来调用 VOOF 插件。此过程需要注意输入法状态、Vim模式、大小写,不算简便。因此,可以自定义热键。
我的选择是将其映射为 F11 键——选择 F11 键是因为数字 11 的形状与双栏式结构很相像,便于记忆。
具体做法是在_vimrc中增加一句“map <F11> :Voof<CR>”。我把它放到_vimrc中,因为此命令常用。
(2)更快捷地定义标题行。
如果认为{{{1这样的字符串也不便于键入,不妨进行自定义。
比如,imap ##1 {{{1,imap ##2 {{{2,imap ##3 {{{3实现了插入模式的映射,即键入##1可以得到{{{1……当然,也可用缩写代替映射。
改进之后的做法,也就是推荐做法imap ##1 <esc>$a {{{1,map ##1 <esc>$a {{{1,功能同上,但不限模式,光标也无须准确定位。
另外还有Geek的做法,仅供参考:设定1/2/3级标题,在MS Word中的默认热键是Ctrl+Alt+1/2/3,按照“不同软件的操作方式尽可能一致”的原则,我们也力争在VOOF中保持同样的热键。但是,Vim map并不支持Ctrl-数字的热键模式,所以,Ctrl+Alt+数字也是做不到的。一定要实现吗?请用万能的AutoHotkey。
^!1::
IfWinActive, ahk_class Vim
{
sendinput {esc} a {{}{{}{{}1
}
else
sendplay ^!1
return
(3)高亮标题行、隐藏标识符。
为实现高亮显示效果,可以使用如下syntax代码。
syn match zhead0 "^.+{{{d"
hi zhead0 gui=bold guibg=black
syn match zhead1 "^.+{{{1"hi zhead1 gui=bold guifg=red guibg=black
syn match zhead2 "^.+{{{2"
hi zhead2 gui=bold guifg=green guibg=black
syn match url"S://S"
hi url guifg=lightblue gui=underline
但是,标题行突出显示后,{{{1这样的标识符更加刺眼。能否将之隐藏呢?Vim当然不会让你失望,只需稍稍修改上述高亮规则即可。我在初学Vim Syntax时,曾苦苦探寻实现方式。而现在,可以直接给出两种做法。
一是利用零宽断言(:h zero-width)让标题不包括{{{d,代码如下。
syn match zhead0 "^.+({{{d)@="
syn match zkey "{{{d"
二是利用contain参数,代码如下。
syn match zkey "{{{d" contained
syn match zhead0 "^.+{{{d" contains=zkey
对于zkey的隐藏,可以直接设定前景色与背景色相同,但更推荐hi link zkey ignore的做法。同理,zhead0也可以不做直接设定,而是用hi link zhead0 MatchParen或其他预设风格。
(4){{{2标识符的自定义等。
{{{1、{{{2……这样的标识符用来表示标题。VOOF 称之为“起始折叠标记”(start fold marker),它是通过foldmarker选项来定义的。比如set fmr=<<<,>>>或set fmr=######,]]],这样就可以使用<<<2 或######2 来表示二级标题。
另外,除了数字表示级别外,还可以紧跟如下字母(及组合):x 表示标记(目录树第二列显示x),可用来标出某些重要标题;=表示起始节点,即Voof 时的起始节点;o 表示open,即该目录树完全展开。除了在标题行直接增加这些标记外,也有相应快捷键操作。
(5)在HTML 中变通使用Vim-VOOF。
工具固然有好坏之分,但多数情况下,用户应用水平对最终效果的影响更大。而学会变通使用,闻一知二、举一反三,是显著提升应用效果的关键。
文本需要额外标记才能使用VOOF,而HTML 是已经附有标记的、扩展后的文本。其中,标题行以及层级已由h标签进行了标示。所以,理论上,HTML 应该可以“加修改”“快速”使用VOOF 功能。
所谓好工具,就是让那些理论上应该能做到的事,实际上也能做到的工具。对着VOOF 想一下,答案有了!
实现方法:很简单,只须设定
:set fmr=</h,}}}
再执行:Voof即可(对于自己的HTML 笔记文档,可增加modeline)。
上述操作效果如图1-21所示。美中不足的是,目录行首的h起始标签有些碍眼。
图1-21
最理想的效果参见笔者的一篇博客文章(http://www.newsmth.net/bbscon.php?bid=731﹠id=55645),通过修改voom.py(v2.0)中第59行开始的函数:def makeOutline(body,lines),在74行之后,增加如下两行:
del_html_re = re.compile('<.*?>')
tline = del_html_re.sub('', tline)
这样把HTML 标签全部清空即可。此修改当然有副作用,所有尖括号内容均令被忽略,请慎用!感谢vfantasie @ newsmth.net网友提供上述代码。
6.小结
如果说 Vim是单一文本文件编辑利器,加 wiki类扩展则实现了多个文本文件的管理,那么VOOF 就实现了以txt为文本资料库的管理功能。凭着Vim便捷的加密、查找、替换、语法高亮、折叠功能,再加上VOOF 的树状管理,我自己认为找到了理想的文字笔记管理方案。
1.5.2 用Vim制作目录或摘录
Vim的应用之妙,凭空举例是很难的。但只要有需求,就能在Vim处得到答案。
1.用Vim g 创建目录
我曾经写作一篇文章“TC 常见问题解答”,原来是没有前面的目录的。后来问题渐多,需要增加目录。目录怎么做呢?当然一行行复制粘贴是可以的,但这岂不是埋没了Vim!只要一条命令:
:g/(\d{1,2})/t
这样就生成了正序的目录(在文章最后)。
2.逆序目录
:g/(\d{1,2})/t0
就会生成逆序的目录,位于文章开头。
3.引申:杨过语录
打开“神雕侠侣.txt”,执行
:g/杨过说/m
可以把杨过说的话整理在文章最后。
4.分割线(——)的输入
文中的“—————-”是如何输入的?
只需要:
72i-<esc>
就这么简单啊!
5.引申:文章段落倒序
:g/^/m0
可以把整个文件的行顺序倒过来。而
:g/^/pu _
则可以在行间插入空行。
1.5.3 TxtBrowser:在Vim中高效处理纯文本
注释:1 原文地址:http://xbeta.info/vim-txtbrowser.htm。
TxtBrowser是一款Vim插件,旨在提供更好的文本浏览体验,其主要功能有:为纯文本自动生成目录树侧边栏(taglist窗口)、语法高亮、多项扩展功能(执行URL、网络搜索当前词等)。TxtBrowser由国内网友 ypguo 开发,近期更新活跃,并且解决了taglist.vim插件不能处理中文文件路径的问题,值得关注。
图1-22
1.TxtBrowser功能展示
以下是功能简介,更多请参见开发者介绍,以及官方下载包中的txtbrowser.cnx文件。
图1-22展示了目录树功能,更多截屏参见网站。
(1)目录树侧边栏。
用Vim打开纯文本类型的文件(.txt或:se ft=txt),键入一条命令(:Tlist)或按下对应热键(可自定义,示例如下),会生成目录树侧边栏(即taglist窗口)。在目录栏单击相应标签,正文就会相应跳转。
目录栏的内容既包括正文目录,也包括图片目录、表格目录,并可进一步自定义。
更新正文后,键入命令(:TlistUpdate)或按下对应热键(可自定义,示例如下),即可刷新目录栏。
:nmap <silent> <F8> <ESC>:Tlist<RETURN>
:noremap <silent> <F5> <ESC>:TlistUpdate<RETURN>
(2)语法高亮。
纯文本也可以“多姿多彩”!TxtBrowser 可以使关键文字高亮显示,突出显示标题、关键字、列举项,以提高效率,愉悦心情。通过:colorscheme colorname命令,可以尝试不同的着色方案。
(3)其他扩展功能。
把光标放到URL 上,执行:TxtbrowserUrl(或←leader→g)可以打开这个URL,该操作也可用于打开网址、各种文件(包括pdf、mp3等)、E-mail地址。
把光标放到单词上,执行:TxtbrowserWord(或←leader→f)可以打开网络字典查这个单词。
把光标放到单词上,执行:TxtbrowserSearch(或←leader→s)可以打开 google搜索该单词。
2.TxtBrowser点评及其与VOOF 的对比
(1)对TxtBrowser的评价。
我认为,TxtBrowser是值得关注和支持的一款Vim扩展,推荐有需求的网友试用。理由如下。
TxtBrowser立志要成为 Vim txt的集成解决方案,无论对编程人员查看技术文档,还是对非编程人员记录笔记,都十分有益。
开发者ypguo系国内网友,他诚心听取意见,积极更新程序。
非常难得的是,开发者从开始使用Vim到写出这款扩展竟然不到两年时间。或许,这也反过来证明了Vim的强大和开发者的开发功力吧。
(2)TxtBrowser几项功能的内部比较。
TxtBrowser插件的最大亮点功能是目录侧边栏。这对于查看长篇技术文档,或自己做笔记,很有帮助。
至于语法高亮和其他扩展功能,早已经在其他扩展中得以实现。用户可以把TxtBrowser作为一个集大成式解决方案,来使用这些功能。当然,也可以进行自定义、修改,或选用更强大的专门扩展。
(3)TxtBrowser与VOOF 的比较。
第一,从目录导航功能看,两者差别不大,但运行环境分别需要taglist和Python。
从目录导航功能来看,TxtBrowser与VOOF 算是同类。我认为两者的长处与短处都是相对的,大家可根据自己的需要进行选择。
两者各有长短:TxtBrowser依赖ctags、taglist;VOOF 依赖Python。
TxtBrowser的标题行胜出:其标题行来自.ctags文件定义,默认是“数字打头,后跟标题”这样的形式,不需额外标注。而VOOF 需要手工增加{{{这样的标识符。
速度与功能:似乎VOOF 的Python更快一些(未做严格测试),并且VOOF 可以通过目录栏对正文段落进行前后调整、级别调整。
中文兼容:如果采用官方taglist.vim,则TxtBrowser在Windows下,当文件或路径中含有中文空格时,目录不能正常显示(Linux下正常)。但是,ypguo对taglist.vim进行了修正,解决了此问题。
第二,TxtBrowser附带了文本辅助功能,而 VOOF 则具备实用的节点管理功能。
TxtBrowser还具备语法高亮、快速打开 URL、搜索、翻译功能,但这些功能与目录功能实际上并无直接关系。也可以拆为两个扩展,或换用其他扩展实现。
VOOF 的优势则体现在节点管理上,VOOF 的目录树不仅可以导航,也能进行节点操作。比如,节点位置的前后移动、提高或降低层级(默认是 Ctrl+方向键),这对资料库管理是非常实用的。
结论:TxtBrowser适用于阅读文本,VOOF适用于管理文档资料库。
从实用选择角度,我认为这两款扩展面向的对象并不相同。TxtBrowser适用于阅读文本,尤其是他人的长文本;而VOOF 适用于建立和管理自己的文档资料库,可以有很多节点,并不断调整其结构。
3.安装及使用笔记
重要说明:以下内容为善用佳软过去试用的记录,有些地方不适用于TxtBrowser后续版本。比如,taglist插件出了修正版,不再需要.ctags文件等。
说明:编程人员对tag、ctags、taglist都很熟悉,但对于像我这样不编程的用户来说,因为TxtBrowser而第一次安装、使用这些工具,还是比较复杂的。谨此记录如下,并提供对初学者友好的解释。
(1)安装ctags。
ctags下载地址:http://ctags.sourceforge.net。
ctags是一款程序(.exe文件),用来生成tag文件。tag文件可以理解成索引——某个目录项、关键词等出现在哪个文件的哪一行。
下载Source and binary for Windows 98/NT/2000/XP,即ctags58.zip。只需要把其中的ctags.exe(约300KB)解压到Windows目录(或其他在path的目录)。
(2)安装taglist。
taglist下载地址:http://www.vim.org/scripts/script.php?script_id=273。
重要说明:由于官方taglist.viM对中文支持有问题,推荐修订版本。
把插件的内容复制到Vim安装目录/vimfiles/中,新增如下内容。
d:\soft\Vim\vimfiles\plugin\taglist.vim
d:\soft\Vim\vimfiles\doc\taglist.txt
(3)安装TxtBrowser。
TxtBrowser下载地址:http://www.vim.org/scripts/script.php?script_id=2899。
除了大部分内容复制到vimfiles目录,一定要注意.ctags文件要复制到“$home”目录,$home可以简单地理解为c:\Documents and Settings\用户ID\,新增如下内容。
d:\soft\Vim\vimfiles\plugin\txtbrowser.vim(生成目录、扩展功能所用的插件)
d:\soft\Vim\vimfiles\doc\txtbrowser.cnx(帮助文档)
d:\soft\Vim\vimfiles\doc\txtbrowser.txt(帮助文档)
d:\soft\Vim\vimfiles\syntax\txt.vim(语法高亮文件)
c:\Documents and Settings\zyx.ctags(定义文件中哪些文本生成tag)
(4)修改配置。
在_vimrc文件里加入
syntax on
let tlist_txt_settings = 'txt;c:content;f:figures;t:tables'
au BufRead,BufNewFile *.txt setlocal ft=txt
(5)重启Vim
打开 http://www.rfc-editor.org/rfc/rfc959.txt,执行命令:Tlist,应该能看到效果了。
1.5.4 gVim+AutoHotkey实现顶层透明笔记本
注释:1 原文地址:http://xbeta.info/ahk-gvim-note.htm。
有了超强的Vim,超强的AutoHotkey,需要的只是用户的创造力了。下面介绍如何利用AutoHotkey让gVim窗口置于顶层、半透明、设定大小,以便于记录笔记。
gVim+AutoHotkey实现顶层透明笔记本的效果,如图1-23所示。注意,图中的大窗口只是用来展示脚本在Vim中的显示效果,左下角的透明窗口才是这里所说的透明笔记本。
vtano.ahk脚本及详细的注释如下。这段代码还是比较简单的,加上详细的注释,相信大家对AutoHotkey也会很快领略一二。
图1-23
; 1.基本信息
; 名称:vtano.ahk:gVim+AutoHotkey实现顶层透明笔记本
; 作者:善用佳软
; 版本:v1.0 (2007-10-30)
; 网站:http://blog.sina.com.cn/xbeta
; 由来:在阅读文档时,经常希望有一个小巧的笔记工具,可以透明悬浮在顶层,随时键入文字,而不影响原来的阅读对象。由于我极喜欢gVim,所以想到了用AutoHotkey设置gVim置顶、透明的办法。当然,gVim自身有一个VimTweak扩展,可实现类似功能。但 VimTweak 的透明是将背景与文字作为整体来设定透明度,这样文字看起来不清晰。而AutoHotkey可以设定背景色完全透明(如果能设定透明程度参数就更理想了),文字却正常显示,我认为这种效果更好一些。
; 适用对象:计算机上装有AutoHotkey和gVim,并且极其偏爱它们
; 2.使用方法
; 将此文件放在加入path变量的目录(如系统目录)下,运行vtano.ahk即可
; 或任意放一位置,然后建立xx.lnk,运行xx即可
; 3.说明
; ① 如果你不用AutoHotkey,也可以把此文档编译为.exe文件
; ② 中间大段的send,也可以改写到Vim脚本中
; ③ 如果想让 gVim的标题栏也透明,只须让标题栏颜色(Windows样式)、gVim背景色、AutoHotkey设定的窗口透明色三者相同即可。
SetTitleMatchMode, 2;设定AutoHotkey匹配窗口标题的模式
run d:\Program Files\gvim\vim71\gvim.exe;启动gVim
winactivate,No Name;激活此窗口
sleep, 500;延时,确保指令完成
send :hi clear Normal{enter};取消gVim的颜色
send :hi clear{enter};取消gVim的颜色
send :hi Normal guifg=red guibg=green{enter};设定为绿底红字
send :e c:\WINDOWS\Temp\vtano.text{enter};打开笔记文件,后缀为text是防止txt有其他语法加亮
sleep, 500
winmove, vtano.text,,50,50,300,150;设置窗口:大小、位置
winset AlwaysOnTop, ON, vtano.text;设置窗口:置顶
WinSet, TransColor, 00FF00, vtano.text;设置窗口:将绿色部分设为透明
1.6 Vim常见问题及解决办法
这里收录了 Vim新手使用中会常常遇到的问题,希望能够帮助大家尽快上手使用Vim。
1.6.1 为什么要学习Vim
严格来说,这并不算是一个具体的Vim问题,不过很多人在初次接触Vim的时候,难免都会产生这样的疑问。Vim那么复杂,为什么要花力气去学习它呢?对非编程人员来说,Vim的用处和记事本是一样的。但是掌握了 Vim之后,就会发现Vim的巨大威力与便利。我的工作记录、通讯录、常用 ID 和密码、资料管理,包括现在的博客写作,都在使用Vim。所以,尽管我并不推荐大家都学Vim,但我相信,普通用户既可以学会Vim,也可以受益于Vim。另外,我在软件应用的领悟上,有两个台阶,它们依次是Total Commander和gVim。
1.6.2 如何用Vim同时处理中日韩文
注释:1 原文地址:http://xbeta.info/gvim-unicode.htm。
1.两项要点
gVim处理多国文字(unicode)有两项要点:一是编码环境:set enc=utf-8;二是正确的字体,比如,要正确显示韩文,可选择GulimChe、DotumChe字体。
图1-24所示的第9~12行字符未能正常显示(同样的字体,Notepad可以正确显示更多内容)。对应的设定为:
图1-24
set lm=none
set enc=utf-8
let LANG=‘en’
set ambiwidth=double
set guifont=DotumChe:h12:cANSI
2.备注
多数情况下,笔者用 gVim处理中文。因此,默认 enc是 prc而非 utf-8。如果临时有需要,则往往改enc,相对不太关注fenc。
测试文本如表1-1所示,供大家参考。
表1-1 多国文字测试文本
中文简体Windows XP 下,不设定encoding,相当于cp936: simplified Chinese(Windows only),支持别名prc, chinese。也就是说,中文简体Windows XP 下,不设定enc与设定“se enc=prc,se enc=cp936,se enc=chinese”是等同的。
此环境下,保存文本相当于notepad.exe的ANSI。
enc=prc时,处理unicode字符能力当然比较弱,如默认打开一个新文件复制韩文,它根本不认识;或打开一个utf-8编码多种语言的文件,也可能转换出错。
所以,处理unicode字符时,一定要(临时)设为enc=utf-8。
直接切换到enc=utf-8,gVim界面会显示乱码,韩文仍无法显示。前者是gVim调用资源的问题,后者是当前字体不支持韩文(多数中文字体都支持日文)。这时,虽然显示异常,但不影响实际使用。比如,你仍可以复制或粘贴。
如果看起来不舒服,则可以更改显示字体为韩文(代价是中文文字不好看)。
关于字符集。se guifont=*选择GulimChe或DotumChe,字符集选韩文(不选似乎也可以)。曾有一段时间,我倾向于选择utf-8,让它成为gVim的enc、文本文件的保存格式、HTML 的编码格式。但这种“高”标准对其他程序并不友好。另外,对中文而言,utf-8编码体积是原默认编码的1.5倍。如果是一篇长网页,差异还是难以忽视的。因此,后来笔者又改回了ANSI/GB-2312,除非遇到问题,才再选择utf-8。
总之,笔者认为:对开发者或应用而言,应支持高标准;对用户或数据而言,采用低标准更为有利。此符合老子“知其雄,守其雌”之道。
1.6.3 要升级到最新版本吗
注释:1 原文地址:http://xbeta.info/vim73b.htm。
2010年8月15日,超级经典的文本编辑器Vim发布了7.3正式版。是否要升级到最新版?请看Vim7.3新特性的分析和直观介绍,如图1-25所示。
图1-25
gVim7.3Windows 版下载链接:http://ftp.vim.org/pub/vim/pc/gvim73.exe。
更多版本下载链接:http://www.vim.org/download.php。
安装过程会自动卸载旧版Vim,如果你不太放心,也可暂不卸载。
安装过程也会询问是否保留vimfiles,当然应该保留。
1.新功能:隐藏文字(Conceal text)
Vim支持语法高亮,有的语法高亮需要一些额外的标记符,它们并不是文本内容的一部分。比如,笔者在博客上写作“用VOOM实现带折叠的双栏树状文本管理”一文时,需要用{{{1、{{{2 这样的符号表示标题级别。这些额外的标记符,最好比较低调。比如,上文就采用了零宽断言(:h zero-width)或contain 来区分标记符,然后用link 到ignore(文字前景色=背景色)的方式来“不显示”它们。但这里的不显示,只是一种前景与背景同色的障眼法。相比之下,Vim7.3的conceal text具备了更强大的功能。某种程度上,它相当于inline folding。
(1)conceal text功能介绍。
Conceal text,直译为“隐藏文字”。不过,译为“可隐藏文字”更符合原意。因为,它的最终效果——是否隐藏、如何隐藏取决于如下因素。
因素一,syn命令的conceal参数。
语句:sy match test_conceal "(善用佳软.*)" conceal
表示:括号内以“善用佳软”开头的字符串,被命名为test_conceal组,具备了conceal属性。更多参见::h conceal。
因素二,conceallevel(简称cole)选项值。
具备conceal属性的字符串,并不一定是隐藏的。其具体表现取决于conceallevel的值。
0:默认值,显示。因此,只设定conceal,并没有任何隐藏效果。
1:短线高亮。匹配的字符串缩略显示为一个“-”符号(取决于listchars设定),并采用conceal组的高亮方案。
2:不显示,除非定义了cchar变量。这里举个例子就更明白了,如下语句:
:syntax match Entity "﹠amp;"?conceal cchar=﹠可以把实体字符显示为原字符,更易于阅读。
3:完全不显示。
更多可参见::h cole。
因素三,concealcursor(简称cocu)参数。
该值默认为空,效果就是无论如何隐藏,当光标位于该行时,conceal文字仍会显示。
如果想取消此效果,可设定相应值:n v i c。Vim帮助文件中的设定值为nc。
更多可参见::h cocu。
(2)conceal text应用举例。
上面的文字已经隐含了两个例子:
例1:任何额外标记符的隐藏,如Voom中的{{{1,还可扩展到Vim的帮助文件、vimwiki……
例2:HTML 源代码中实体字符的还原显示,甚至可以把所有HTML 的标签设为隐藏。
笔者能想到的其他例子。
例1:用来背单词。比如,把英文单词后面的所有释义设为隐藏,光标移在该行时,再显示释义。
例2:txt格式的读书笔记,参见网站的视频(http://xbeta.info/vim73b.htm#swf)。
2.新功能:相对行号('relativenuMber' 'rnu')
以前,输入:set nu会显示行号;现在,输入:set rnu会显示相对行号。
所谓相对行号,就是光标所在行为第0行,然后,向上向下分别以1、2、3……标示。其主要用途是方便计算移动距离。但由于翻页/滚屏时,当前行会移动,所以,相对行号只能在一屏内使用。
操作方法:
:set rnu
:set nornu
(nu与rnu不能同时使用)
更多说明可参见::h rnu。
3.新功能:彩色列(colorcolumn)
例1::set cc=10,20,30表示把第10、20、30列进行高亮。
例2::set cc=-20,+10,120表示把textwidth-20、textwidth+10、第120这三列进行高亮。
例3::hi colorcolumn guibg=lightgreen定义高亮列为亮绿色。
需要说明的是:cc列标可以是绝对值,也可以是相对值,如例2所示。该功能会降低屏幕刷新速度。遇到换行、中文,可能会不连续。
此外,colorcolumn还有一个最实用的功能,例如set cc=81,可以提醒自己写的代码别超过80列(感谢网友ankyhe)。
4.新功能:持久性撤销
功能介绍:Vim此前的撤销(u: undo)功能,与大多数软件一样,局限于本次打开文件后所做的编辑。而Vim7.3新增的持久性撤销(persistence undo),让我们即使在文件多次关闭又重新打开编辑后,还可以把所有的修改都u还原回去(当然不能超过'undolevel'的限制)。
相关参数介绍如下。
:set undofile。undofile(udf),缺省关闭。设定后,Vim在把缓冲区写入文件时,自动保存撤销历史到撤销文件中。在读入文件到缓冲区时,自动恢复撤销历史。
'undolevels'('ul'):可以撤销的最大改变次数。缺省为 100 或 1000,例 set ul=500。
指定 undodir。'undodir'指定撤销文件存放的目录。默认是当前目录,为全局变量。undodir可以是目录名列表,以逗号分隔,格式参见backupdir。但是,在写入时,会使用第一个存在的目录。因为"."总是可用,所以"."之后的目录不会用来写入。在读取修改历史时,会查找所有的项目来寻找对应的撤销文件,并使用第一个找到的撤销文件。如果该文件不可读,就会报错,但不再继续查找。
关于撤销文件,具体说明如下。
文件名:"."代表文件所在的目录。此时,"file.txt"对应的撤销文件名是".file.txt.un~"。如使用其他目录,撤销文件名就是被编辑文件的完整路径,但路径分隔符以"% "代替。
文件保护:撤销树文件中会包含这个文件内容的hash值,这样当一个文件有了撤销树文件后,如果它被其他程序编辑过,Vim会忽略撤销树文件,而不会因此让撤销搞乱了文件。
不会自动删除:目前Vim只会去创建撤销树文件,而永远不会去删除它们。如要删除则需要手动完成。因此,我只好把它们放到自己的 tmpfs 临时目录中,利用关机自动清除。
原有命令的增强::earlier 和:later 这两个命令也增加了一个单位,即f 为写入次数。比如说,我打开了一个配置文件,编辑很久,保存并测试后不满意,想恢复到原来的样子。怎么办呢?以前我会一直按着u 键直到Vim告诉我不能撤销了,或者用备份文件(*~)来覆盖当前文件,现在可以使用命令:earlier 1f 直接恢复到上次写入时了。
如何只对某些类型的文件启用undofile 呢?具体如下。
通过BufReadPre autocmd 方式进行设定。
使用现成的undofile.viM脚本。
5.新功能:+cursorbind
Vim在比较文件的时候,有个scrollbind 功能,它可以让被比较的文件同步滚动。但是,在之前的版本中,两者光标经常并不在同一行。从一个窗口跳转到另一个窗口时,经常找不到光标的位置。现在好了,有了这个特性,光标的位置也同步了。
6.是否升级到Vim 7.3 的考虑
升级的收益具体如下。
客观上,获得了新
主观上,用户需要判断这些新特性是否是自己所需要的。
升级的成本具体如下。
需要获时间和精力下载、升级。
需要手动修改gVim路径,从vim72 改为vim73。比如TC 软件中F4 编辑器的设定,再比如win+r 某些快捷方式的属性(“D:\soft\Vim\vim73\gvim.exe-p—remote- tab-silent f:\now\now\now.htm”)。更好的设置方式是把gvim.exe 所在目录写入path 变量,在引用时不加路径,直接写为gvim.exe(可以带参数)。
Python 兼容性问题。Vim7.2 对应Python2.6,而Vim7.3 默认需要Python2.7。
如果某些扩展需要Python 支持,则需要升级Python。
总的来说,必有一款程序会让你如此信任,让你愿意随着它同步升级。对笔者在,而言,Vim就是如此。