第一篇 群雄并起——文本编辑器的武林大会

作者:   日期: 2010-11-11  分类: 1.2 文本编辑   标签:

[返回 打造全能的文本编辑器序列文章] 文本文件,是很重要的一种文件类型,它有很多优势,最重要的是它很小。在日常的学习与工作中,每个人都会或多或少要接触文本文件,这样,对文本文件进行编辑就是很平常的事情了。现在文本编辑器可谓种类繁多,鱼龙混杂。各个编辑器有它自己的优势,对编辑器的喜爱也因人而异。很普通的用户,或者说初级用户,可能用到的文本编辑器会是Windows自带的Notepad(记事本)。就我个人而言,曾经有段时间也只是使用notepad。然而对于一个程序员,notepad是远远不能满足要求的。大部分时候,也许程序员们使用的会是IDE,然而,IDE一般都比较庞大,占用资源也比较多。如果只是写一些简单的或者只是看看一些代码,似乎没有必要启动一个庞大的IDE,而notepad又没法满足要求,这个时候拥有一个好用、强大的文本编辑器就很重要了——这些文本编辑器一般都支持语法高亮等功能,方便阅读程序与程序编写。

记得在初学JAVA程序设计时,看网上的视频,一上来不会是教你使用Eclipse之类的IDE,而是使用UtralEdit、Editplus等之类的文本编辑器。使用这些编辑器作为入门有很多好处:所有代码基本都是手工输入,对于初学很有好处,而不是利用IDE的代码提示等完成的,初学者更容易理解来龙去脉,更好的入门;这些编辑器一般都比较轻量级,对于入门级教程,没有必要使用庞大的IDE,使用普通文本编辑器就可以胜任了……

使用过Unix/Linux的用户,肯定都知道vi编辑器,似乎vi之于Unix/Linux如同notepad之于Windows。然而Vi与notepad的功能却超越甚远,更不用说Vim了。

在武林大会开始之前,首先介绍一下“当世英雄人物”:

1 武林泰斗——Vi/Vim、Emacs、jEdit(免费、开源、所有平台)

武林中的泰山北斗,人人敬仰,流传于世,地位无人撼动。Vi/Vim、Emacs就是文本编辑器中的泰山北斗。

Vim:前段时间花了不少时间系统地学习了Vim,功能确实十分强大,而且有众多的插件可使用。然而,Vi/Vim的门槛比较高,很多人一开始使用会很不习惯,继而放弃使用。我在使用时也有这种感觉,然而没过多久就喜欢上了它的一些操作方式,比如:移动光标的方式,简洁的界面,经典的黑底白字等。现在我用的浏览器Firefox、Chrome都定义移动光标的快捷方式为Vim的方式,这样手不用移开键盘就很顺手地在屏幕上跳动,很是方便;很多软件,我也尽量使用快捷方式操作,隐藏菜单栏与工具栏,编程黑底白字等。由于功能强大,学习难度也大,需要长期实践才能熟练掌握,才能用起来很爽。用很多使用Vim的人的话说:Notepad等编辑器根本没法用。然而作为一个程序员,很有必要至少掌握Vi/Vim的一些基本操作。如果你决定深入地学习Vi/Vim,在网上有很多相关的学习资料,而且它的官方帮助文档很全、很详细,是学习的好资料。另外,在此推荐几篇优秀的博文供学习:善用佳软之《普通人的编辑利器——Vim》Dieken之《程序员的编辑器——Vim》

Emacs:对于Emacs,入门难度似乎更高,网上说不少高级程序员很喜爱。我没有接触,一来,不想花大量时间去学,没那么多精力;二来,现用的文本编辑器已经能够满足基本工作需要了。有兴趣的朋友可以在网上收集资料学习。推荐一篇优秀博文:王垠之《Emacs是一种信仰!世界最强编辑器介绍》

jEdit:也许很多人听说过甚至使用过Vi/Vim、Emacs,但是对于jEdit却知之甚少。这段时间有使用过jEdit,开始以为它和EditPlus等是一个数量级的,用了之后才发现,该编辑器十分的灵活,功能当然就相当强大,个人觉得与Vim等是一个数量级的。因而我将其归为“武林泰斗”。jEdit最大的优势是可以通过JAVA语言编写插件。现在已经有众多jEdit插件可以使用(主页:http://www.jedit.org)。

2 武学宗师——UltraEdit、Editplus、TextPad、EmEditor等(共享、Windows)

一代宗师,深受特定领域人的爱戴和敬仰。

这些软件有一个共同特点:共享软件,有一个试用期,过后需要支付一定的费用。这些软件功能也比较强大,可以代替Notepad,不过由于是共享软件,使用有限制。当然,网上有很多破解的。具体哪一个好,应该说是各有优劣。似乎使用UltraEdit的人比较多,它的确是一款十分优秀的编辑器。

对于EditPlus与EmEditor是两款很好的软件,Polaris现在就是两者结合者使用。

注意,这些软件都只能在Windows下使用。

3 普通高手——Notepad++、Notepad2等(开源免费,可替代Notepad)

虽然不如泰山北斗、一代宗师那样闻名千里,然而实力却也不差,可称之为高手,一般人无法与之较量。

这些软件入门低,但功能强,十分适合那些不想使用记事本的初级用户。它们是记事本(Notepad)很好的替代品。

当然还有很多来参加武林大会的人物,不过由于他们实在太一般,来一般也只是捧场、凑热闹而已,在此不一一列举。

4. 不是结论的结论

就像武林界没有绝对的高手,文本编辑器一样没有最好的,只有最适合的。Emacs很强大,可是对一个很普通的用户,平常只是写写日记之类的,对电脑知识了解也不多,学习Emacs是不可能的。所以,适合每个人的编辑器可能不一样,我们应该选择一款自己喜欢的、使用起来很顺手的编辑器使用,以求达到最高效率。我的建议是:

(1)普通初级用户,觉得Notepad太一般,不能满足要求,也讨厌其界面的,可以选择使用Notepad++,Notepad2等,Polaris强烈建议使用EmEditor,至于原因,后续文章会给出;

(2)一般程序员,建议使用EditPlus、EmEditor、UtralEdit等。
如果你愿意学习,可以深入学习jEdit、Vim甚至Emacs;
如果你是一个JAVA程序员,愿意学习,推荐使用jEdit,因为它的定位就是:Programmer’s Text Editor,而且有很多插件可供使用,只要你愿意,甚至可以配置成类似Eclipse那样强大的IDE。
对于C/C++程序员,jEdit的支持也很好,不过如果愿意学习,推荐使用Vim,网上众多关于配置Vim开发环境的文章大多都是针对C/C++语言的。
如果你是一个程序员,一般人应该都会使用Eclipse之类的IDE,不过这样的IDE太庞大,很耗费资源。
如果只是些一些测试性的代码或阅读一般性的代码,还是建议用一般的文本编辑器,它们小巧且功能强大;
如果你不愿意配置,不想学那么多,在此强烈推荐UltraEdit、EditPlus和EmEditor,它们各有优劣,在后续文章中,Polaris会详细对比说明。

众多文本编辑器的比较可以参看维基百科关于《文本编辑器的比较》。另外,有兴趣的朋友可以把众多的软件下下来试试,浏览一下这些软件的样子,并选择一两款作为自己长期使用的编辑器。

分享到: 更多
作者: 2010-11-11 
出处: http://xbeta.info/texteditor-more.htm
说明:转载、投稿、翻译类文章版权信息以正文标注为准
分类: 1.2 文本编辑   标签:

热门评论

塞壬 发表于 2010-08-27 13:50:21 #
此言深获我心,大家理应摒弃门户之见,共襄盛举才是。 尺短寸长,在所难免,徒负意气之争无异于画地为牢,无裨大局。
(3喜欢)
lodwef 发表于 2010-08-27 04:02:07 #
可能CG行业的用户稍多。 一些优秀的软件诸如DFusion、XSI等捆绑/内嵌SciTE作为script编辑器,客观上起到了推广作用。
(1喜欢)
wgf4242 发表于 2010-08-27 13:00:19 #
用js写宏..多半的事儿都能做到.
(1喜欢)
Progray 发表于 2010-08-31 01:55:35 #
我认为写代码更多的是处理功能逻辑,而不是玩弄字符,作为程序员,在目前普遍场合下,玩弄字符带来的效率基本上可以忽略不计了。而IDE带来的高效也是文本编辑器+plugin/addons难以达到的。
(1喜欢)
lulu00147 发表于 2010-09-01 21:54:35 #
编辑器杂谈 作者:HuaHope Scintilla的相关项目很多,官方网站的related中就列举了相当多的。只是恰如有次见到一个评论中说的,自从有了Scintilla,几乎大多数的编辑器都很少自己编写“编辑器”了,完全是加个外壳,当然编辑器控件SynEdit(delphi)、CodeMax等也功不可没。 就Scite_ru、Scite Latex IDE而言,其实并不算是出众的Scintilla相关项目,而ScintillaLua虽然是这里看到了才知道新有了这个项目,也刚去下载了(可惜zip的解压失败,就下载的tgz的),但只是看看配置文件就知道了,其也只不过是Mitchell Foral的一个副产品,之前Mitchell Foral就有Scite Tools和Scite St,再加上后来的Textadept,这几个都是差不多的实现,除了补足SciTE的动态着色之外,还有一个snippet功能,不过也许ScintillaLua可能独立后实现的比以前更完善吧,没有看代码,但是lexer配置倒是丰富了很多,终于几乎实现了Scintilla的所有支持语言,另外一个最大的改进就是许可证终于换成了BSD,比Scite Tools的LGPL要更开放些,以至于SciTE_ru最新的版本就以及迫不及待地整合了ScintillaLua,实现了外部lexer的支持。不过从设计角度而言,Lexer采用外挂的lua脚本,处理能力毕竟有限,虽然使用llpeg灵活性增强了,但是效能无疑更低了,即便是luajit,估计也无法对付稍大一点的文件。Scintilla比较好的项目,Filerx算是不错,可惜很久就不更新了。其余的,就编辑器而言,都没能走出Scintilla的限制,也自然更难超越Scintilla自身的光环。 其实国内基于Scintilla的项目也很多的,但真正自己写编辑器的也有,比如已经商业化的Aptedit,还有MegaxEdit等,MegaxEdit的博客中讲了一些编辑器实现技术,比如折叠等,和Scintilla实现是类似的,只是很可惜,由于没有实物,所以无法评测其功能和性能,不过虽然上面说大多数编辑器完全拿来义不好,但是MegaxEdit完全自己写,甚至字符串查找KMP算法也自己实现,实在也太过于自力更生,看日志好像还自己实现了可配置的状态机,距离正则库也差不远了,只不知道正则库是否也自己写完了:)Megax还曾经到FlexEdit网站评论过,虽然指出没有突出优势的缺点也不算错,但从其日志上描述的技术思想中感觉块着色算法虽然比Scintilla的要好,但是还是不够完善的,比如不允许循环嵌套语言,其实这个限制并不应存在,除非刻意的构造,否则几乎所有的文件中语言再怎么嵌套都是有限的,也是可以分析着色的。另至于嵌套只允许4个子语言,对于html而言就未必够用,而且如果不独立线程,即便是块着色速度对于10万行以上的大文件也依然很慢,不过Megax从09年2月就消失了,一直到这个月才又冒出来更新日志,感觉依然对lex很纠结,估计还有一段路要走。当然还有MadEdit,也是很不错的,16进制和内码做得很好,只是大文件处理能力有限,界面也不够美观。至于国人的flexedit、notepad++等,也多半只是加个壳而已。没有太多需要说的,Notepad++的插件系统倒是不错,现在的插件也非常的多,只是其中很多没有实现界面的插件并没有太多的必要,如果Notepad++实现ScitTE中的lua脚本扩展,编写脚本即可扩展类似的功能,实在没有必要做成dll,从一种扩展走向另一种封闭,只是没有深入研究过其插件系统,感觉整体设计还是不错的,不过距离几乎完全插件化的Eclipse估计还是有所差距。 而国外的自己写编辑器模块的就要多一些,比如e texteditor,intype(早期是自己修改的Scintilla,后来好像是觉得Scintilla不够好,重新实现了自己的),sublime text editor等等,其实编辑器技术最难,也是最核心的就只是如何对内存进行Gap操作,如果完成了这个,效率足够,其余的真的很容易,Codeproject上有一些相关的教程,但估计看完的并不多。至于Komodo、XmlSpy、LuaEdit、Autoit的编辑器、Adobe的Creative Suite套件中的ExtendScript Toolkit等,由于产品定位不同,直接使用Scintilla的编辑器也无可厚非。何况Komodo、Adobe都曾对Scintilla社区有贡献过代码,比如Scintilla中的Mac代码很多都是Adobe贡献的。 至于MacOs下的Textmate也是自行实现的编辑器模块,不过没有测试过大文件性能,MacOs下的开发有个很好的优点,很多都是苹果内置实现了,而且MacOs本身就与脚本相当紧密,甚至自带了tcl、perl等,shell也很好用,所以MacOs下的编辑器都实现的比较好,比如BBEditor等,xcode使用起来也非常方便,不过很奇怪的是,xcode的snippet、自动补全等在输入代码后会用灰色字体将后续的补全,但是如果用户不想要这个,又会自动清除,重新补全,但实际使用中感觉文本晃动的不太舒服,尤其是多行补全时,也许有人喜欢这样的风格吧,不过也可能有设置可以关掉吧。 当然提到编辑器,不能不提的是Unix下的Vim和Emacs,两者各有千秋,不过也有各自的缺点,要不如果过于完美,凭近乎传奇的悠久历史,早就一统江湖了,呵呵。目前两者在windows平台都还算小众,另外,两者设计也不是绝对完美的,比如vim的键盘映射,命令的内部代码全部是硬编码,如dd删除行,以及yy等就是判断是否d或y重复而实现的,虽然新命令可以做map,也依然可完全定制键盘序列,但是如果代码实现能够将键盘序列与对应功能任意由用户绑定,或者内部使用表来绑定键盘序列和其默认功能,即更灵活些就更好了,这样修改起来也很容易就可以改进键盘绑定,而不是现在功能处理分散在代码的各个地方。UltraEdit没什么太多要说的,虽然不及Vim和Emacs悠久历史,但也再过几年就开发了二十年了,足够长的时间,也足够做很多改进了,事实也是如此,现在的实在是太庞大了,一个编辑器要几十兆,不过就功能而言,除了大和全之外,16进制还可以,列模式虽然也不错,但对于东亚等复杂文字处理还是不够完善,至于作为重要特性的大文件处理性能其实也不好,用临时文件时先要复制一个副本导致速度很慢,而且占用大量硬盘,不用,就无法撤销编辑,实在是两难。何况现代编辑器的许多理念,如自定义着色Lexer、snippet等,也是很难见到。扩展性也不够好。而就体积而言,同样庞大的Emacs就远比UltraEdit要强上非常多,可见UltraEdit之臃肿,至于提到的大文件和扩展性,EmEditor就很不错,EmEditor通过基于内存映射的框架实现了一个很好的大文件编辑功能,不过EmEditor很多都依赖于插件,未必是很好的设计。如果不像Eclipse那样,有众多的拥蹙开发插件的话,而只靠开发者本身开发的话,插件系统用处并不大。更何况虽然EmEditor的脚本扩展做得不错,好像也实现了com,但是多数插件仿佛并不是脚本实现的,这和样就无形增加了第三方开发难处。开发Visual Assist可以make money,给EmEditor开发插件,估计很少有用户这么做吧,幸好EmEditor还是卖出了不少钱的,开发者一直相当积极的升级,一次版本都能发几十个beta版,现在已经是版本9了吧,相对而言,EmEditor升级对于现代编辑器功能的关注还是不错的,9中就已经实现了snippet,比起UltraEdit经过15个版本还停留在Templates模板功能上,每次的升级只是围绕着彩色的tab页,界面配置的角色化,查找窗口中的单行编辑框变成多行编辑框,应该算是比较上进的了,不是说UltraEdit做的改进不重要,只要是用户使用到的,都是最重要的功能点,但是核心功能的改进更不可或缺,否则界面做得再好,编辑效率提不高,有什么用呢。说了这么多编辑器,也提一下Editplus,虽然功能不算突出,但设计的很简洁,很中庸型的编辑器。至于pspad,开发了很多的功能,甚至包括计算器,颜色拾取器等,确实很辛苦,但是依然不够稳定,而且比起同样是delphi编写的RJ TextEd来说,功能也并不算丰富,界面也逊色些,其实delphi的界面库很好用,换肤功能也很强,虽然也许换肤对于编辑器而言过于花哨,但是只要是会接触和使用到编辑器,而不是只知道记事本和word的,编辑器多半是最最常用的工作或学习的不可或缺的工具。因此如果拥有一套美观的默认外观对于用户使用也是很有用的,毕竟爱美之心人皆有之。
(1喜欢)
lulu00147 发表于 2010-09-01 21:58:34 #
以上是大牛 HuaHope大大 写的《编辑器杂谈》 群众的眼睛是雪亮的~~其他的不说了
(1喜欢)
bobbyworm 发表于 2010-09-02 12:54:31 #
我尝试过VIM,不过放弃了。我认为选择软件不一定要用最好的,而是要用最合适的。VIM可以说是功能强大,但是绝对谈不上好用,它的好用是建立在熟练操作的基础上的,而达到熟练操作的水平是需要时间和精力成本的。这个成本值得付出吗?不同的人会有不同的答案。在实际工作当中,和思考所付出的时间相比,操作上提高的那一点效率是微不足道的。我选择了N++,是因为它可以满足我的需求,否则我自然会去寻找和学习功能更强大的软件。每个人对软件都有不同的需求,没有必要都去追求功能最强大的软件。
(1喜欢)

无觅相关文章插件,快速提升流量