一、xbeta的引言
这是一篇迟来的软件介绍。令我安慰的是——美好之物并不怕迟;甚至因为时间的流逝,更显味道。
本文由优惠活动组织者 PlaySoft 策划,由 textpattern 执笔,都是本站的老朋友。但 7 月底的第一稿被我坚决拒绝!原因是,文章没有显示出与 EverEdit 匹配的高质量。3周之后的更新,我仍然认为达不到这一标准。不过,我心软了:原文照发,但自己要在文章之外,补充一些内容。
1、我与 EverEdit 的结缘过程
我与 EverEdit 的较为直接的接触,始于 4 年前。
2010年9月,我邀请 polaris 写了文本编辑器的系列文章,引起了很多网友的关注。第 1 篇文章,就有近 200 条讨论,有些内容显然出自行家之手。于是,我通过邮件向这几位网友请教。而这些网友,都很谦虚。其中一位称 “……其中有我的写的一些,难免疏漏。我只开发编辑器内核,上面两篇文章也是针对内核。对于外围GUI而言,并未作深入探讨。” 后来才得知,他正是 EverEdit 的开发者 megax(博客)。
2 年之后,2012年10月,megax 问我是否愿意在博客推荐 EverEdit。软件好,我当然同意。却因为我只用 Vim,难以写出真实感受的 EverEdit,就想改为深度访谈,megax 同意做些准备。
半年后,2013年3月,megax 发来一篇纪念 EverEdit v2.6 的短文:
–概述:
在计算机发展的历史长河中有一种软件时刻伴随在我们的左右,甚至让我们都觉察不出来它的存在,它可以称之为所有软件的基础,那就是编辑器.凡是可以接受数据输入,编辑(删除/添加/修改)操作的软件我们统称之为编辑器.不过在这篇文章里,我们特化编辑器为文本编辑器.其它数据格式的编辑器不在我们的讨论之列.–编辑器的前生今世
首先,我们来看一下是先有鸡还是先有蛋的问题.软件必须得是有一个编辑器写出来的,而编辑器本身就是一个软件.这是一个很有意思的问题, 就好像用C语言写出一个C语言的编译器.不过,很显然第一个软件不是由我们通常认为的编辑器所制作的.纸带应该是最早的数据输入的手段,从抽象的角度来看它应该也算是编辑器的一种体现.只不过它的数据是固化的,不可修改的!一旦要修改, 就需要重新制作这个纸带.它的编辑操作用现代的概念简化来说,那就是:全选->删除->重新输入!人类的第一个可在屏幕上显示的编辑器很有可能就是用这种极其原始的带孔纸带实现的.
一旦我们实现了哪怕一个极其简陋,功能极其单一的屏幕编辑器,那么就可以通过工具不断的自我完善,制作出更先进的工具. 人类和动物的主要区别,就是人类会使用工具制造更先进的工具.最早的图形编辑器, 用户可能只能简单地添加字符,每次或许只能删除一个字符,甚至无法Undo/Redo.
历史的车轮继续前进,随着计算机性能的更进一步发展,通过工具不断的自身反复进化,我们可以终于到了现代编辑器了.从EverEdit的主界面中我们可以看出,现代的编辑器基本上有菜单,工具条,状态栏,标签栏,编辑区,辅助窗口等几大要素构成. 其中除了编辑区,其它要素并不是必须的.现代的编辑器还可以实现复杂的基于规则的分色显示,可以处理多国语言,无限级Undo/Redo等等.
–关于EverEdit
EverEdit既然称之为现代的编辑器, 那么我们来看一下它的主要特点:
. 多种编码支持
. 低内存占用
. 完备的正则
. 强大的用户自定义语法着色
. 支持tab跳转的snippet
. 脚本支持(VBS/JScript)
. 插件支持(数十个hook,深度满足各种插件的要求)
. 方便的列编辑
. 强大的自动完成(可通过插件扩展)
. 多种主题支持上面简单地列出了用户关心的EverEdit的主要特性.EverEdit最初是模仿Editplus而来,所谓的模仿主要是操作体验上的模仿,并就其不足给予了增强. 比如Editplus的着色器较为简陋,无法进行复杂着色,比如markdown的; 也不支持自动完成, 还有多点snippet等等. 可以说到今天为止,EverEdit是要超过Editplus的. 但是在稳定性和用户体验上,特别是某些细节上,仍然有差距!当然, 这也需要时间来不断的完善!
–关于TextMate/Sublime text
TextMate在编辑器的进化中占据着重要的历史地位, 以现代的眼光来看, 很多优秀的概念和操作均源自于TextMate, 或者至少可以说是在TextMate上得到了发扬光大. 紧接而来的便是各种模仿者, 比如e,intype,subliem text等等. 其实EverEdit也是texmate的模仿者之一, 比如everedit的多点跳转, scope概念, 甚至脚本菜单也可以称之为windows版的bundle. 就为了体验textmate, 特意买了个mac, 不过textmate的内核让笔者甚是失望.在所有的模仿者当中, sublime text无疑是最成功的, 其2.0版本推出之后迅速获得了大量用户, 仰着跨平台的特性, 甚得好评. 不过对subliem text中的非常基本的设置完全依赖脚本来设置的操作, 笔者不是完全赞同, 因为那样几乎又回到了vim/emacs的水平了.当然完全使用脚本来配置的对于开发者而言是节约了大量的开发时间, 对部分高级用户而言倒也乐于接受这种脚本形式的配置, 对一般用户而言,可能翻了半天找不到字体设置的话, 就会把这个软件删了!此外,跨平台之后,使用的framework不可避免的会造成体积的臃肿,不过跨平台以后是趋势!
–结尾
在可以预见的将来, 很多用户可能不止使用一个编辑器, 甚至会使用许多个编辑器组合操作完成复杂的任务.对笔者而言, 软件的功能不在乎多, 而在于精. 软件的价值就体现在一些非常细小的方面, 正是这些无数个小细节, 才逐渐捕获了用户的芳心, 才可以在强者如林的竞争中取得一席之地!
除了上面的简短文字,还有一段非常有震撼力的解释、目录:
……源自于本人的一个PPT, 单独来看的话有点突兀, 参考大纲的话, 就了然了(大纲如下). 有时间的话, 会按照这个大纲整理出一份文档, 供后来人使用, 写成一本书也未尝不可!
1. 前生今世
1).历史
2).现在
3).关于商业和开源编辑器
2. 框架描述
1).平台
2).工具
3).视图文档结构
3. 字符集
1).Unicode
2).Utf-8
3).其它字符集
4).MBCS字符串遍历
5).字符集探测
4. 内存管理
1).普通文件
2).超大文件
3).二进制文件
5. 界面绘制
1).消除闪烁
2).Unicode
3).非Unicode
4).自动换行
6. 优化策略
1).绘制优化
2).缓存策略
3).其它
7. 语法着色
1).关于lex和正则表达式
2).通用非精确词法分析实践
3).状态机
8. 疑点难点
1).鼠标选择
2).列选择
3).屏幕滚动
9. 键盘输入
1).字符插入和删除
2).剪贴板操作
3).快捷键
4).键盘布局与加载
10. 撤销重做
1).设计模式之Command模式及其缺点
2).基于ID的多层级撤销和分组
11. 锦上添花
1).标尺
2).关于Hex编辑
12. 代码重构
1).为什么重构
2).重构什么
3).如何重构
13. 结尾
我对这些内容虽然感兴趣,但文字本身仍然不足以发表,于是继续等待。此时期,小众软件和异次元,已经发表了对 EverEdit 的介绍文章,这更让我减少了压力——不致于因为我疏懒,而影响读者知道优秀的 EverEdit:
- 异次元软件:EverEdit – 值得关注的国产原创开发的免费高效优秀的文本与代码编辑器
- 小众软件:EverEdit – 轻量级纯文本编辑器
2、EverEdit 与梦想
又过了1年半,即此刻的2014年7月,因为 PlaySoft 和 textpatter 的新推动,终于有了这篇文章。我在重温开发者博客时,看到了如下文字:
如果说这编辑器是我的一个梦想的话, 那么这个梦想坚持的确实很久了。其实很多事情, 贵在坚持! 步履维艰时, 翻过一个山头, 往往就是一个转折点。在你无法进行时, 不妨放一放, 也许某个偶然, 会突然想到更好的解决方案! 不过, 别放太久了, 太久易生惰性, 再拾掇起来的话, 就更难了! 耐得住寂寞, 守得了空房, 梦想就在不远的地方!
任何一个工程膨胀到一定程度的话, 从某个角度来看, 都可以说是 “垃圾” 工程! EverEdit中共有400多个文件, 近10万行代码. 每次打开工程文件, 看着这一堆文件的感觉都是极度痛苦的. 每次都有重构的冲动, 还好都压抑住了! 重构是把双刃剑, 玩不好的话, 容易伤到自己!表现在产品上就是质量下降!
EverEdit中没有什么太高深的技术, 也没有过于复杂的算法, 都是些琐碎的处理.
megax 加亮并且很多读者赞叹的,是更有文学色彩的『耐得住寂寞, 守得了空房, 梦想就在不远的地方!』
而我更感叹的,则是作者面对 400 个文件,10 万行代码的『垃圾』之感,以及『没什么高深技术,没有过于复杂的算法,只是琐碎处理』的断言。这是我在博客历程中,在多次修改文章的过程中,在删除掉无数过期文字/文章过程中,所能深沉共鸣的。
前一句是把寂寞喊成了口号,后一句才是寂寞的本来面目。而所谓梦想,也是若有若无的:当不工作时而遐想未来时,梦想被虚幻出来;当不工作而回顾历史,看到作品从 MegaxEdit 到 LotusEdit 最终演变为 EverEdit 时,梦想被总结出来;而埋头修改代码时、厌烦时、失败时……梦想的念头早就忘却。
而神奇之处在于:感受到梦想的时间,梦想只是远处的意向;而忘掉梦想埋头工作的时间,却正在实现梦想。
3、EverEdit与Vim:作为纪念的截屏
当我要安装最新版 EverEdit v3.3 时,却发现硬盘上早已存在了 EverEdit v2.9,并且自己手工制作过精简版。把这2个版本,以及我写作此文时用的 Vim,一并截图发出来,作为纪念吧。(点击缩略图可放大)
下面开始正文部分。作者为textpattern,受邀评测。早期偏爱vim,后转向Emacs(经常用lisp和clojure,采用emacs模拟vim按键方案的扩展evil),兼任水木清华Emacs QQ讨论群群主。日常工作中,很少有机会用everedit。因为everedit是win独占的,而其使用的主机基本都是mac和linux。
二、EverEdit 总体介绍
今天我向大家介绍一款文本编辑器EverEdit,借用其官方网站的介绍,EverEdit是专门为国人设计的一流文本编辑器,它身躯小巧,性能卓越,可自定义功能完善,支持丰富的主题和脚本,同时它还完美支持各种中文编码、大字符集字符的显示,万码无忧。
EverEdit的开发者是中国人,它是一款共享软件,一次收费,终生升级。文本编辑器是IT用户喜闻乐见的软件常客。从专业级的Emacs,Vim到小巧玲珑的notepad,萝卜白菜各有所爱,各种流行的编辑器都有广大的用户群体。收费编辑器阵营更是强者如云,国内口碑比较好的有sublime text,Ultra Edit,EmEditor等。这几款工具早已成名江湖,EverEdit是后期之秀,它的独特优势何在?
软件主要特性:EverEdit官方网站(http://cn.everedit.net/)列举了该软件的主要特性。对比常见的收费编辑器,下面逐条分析EverEdit的重要特性。
1、超强编码:EverEdit对多国文字编码有特殊优化,它的宣传语是“一软在手,万码无忧”。EverEdit能智能识别文档编码,还可以方便的批量转换文件编码,处理中文文档格外方便。
2、多选区,多点编辑:EverEdit使用Alt+F3选取同名变量。Ctrl+D向下选择。该功能最早由sublime text实现。
3、文档地图:以缩略图的方式显示文档整体外观。同样也是sublime text的经典功能。
4、MarkDown内置支持:EverEdit官方支持MarkDown文件编辑,支持预览。sublime text需要下载Markdown插件才能支持。EverEdit对MarkDown支持相当全面,有完善的markdown元素工具条方便书写,MarkDown文档预览效果也是一流。
5、超大文件支持:EverEdit支持异步打开巨大文件(显示进度条),不会阻塞界面。EverEdit开启文档的速度极快,用户体验很棒。
6、二进制编辑:EverEdit内置二进制编辑器,支持查找替换二进制字符。UltraEdit也有特殊的二进制模式。
EverEdit还有不少特性,ctrl+p万能查找,自动补全,代码片段,列模式等等,深入使用EverEdit会有不小的惊喜。EverEdit有完善的插件体系,内置的ftp远程文件编辑,emmet(html编辑),中文编辑加强(繁简转换)等插件相当实用。作者未来也会发布更多适合国内用户的强力插件。
EverEdit详细的帮助文档为http://cn.everedit.net/doc.html。总的来说,EverEdit可以看成是sublime text,EmEditor,UltraEdit的混合体,目前它适合作为上述工具的轻量级替代品。
价格与服务优势:EverEdit的最大优势在于价格和服务。它的官方价格是128元,仅仅是同类收费工具的一半甚至三分之一。EverEdit是国人开发,作者了解国内用户的需求,并提供中文论坛支持(http://forum.everedit.net/viewforum.php?f=1)和邮件支持。作者的技术支持相当专业,反应极快。我发信询问EverEdit ftp插件的使用步骤,作者在五分钟内回复了邮件。
更新活跃:EverEdit目前开发活跃,从更新日志(http://cn.everedit.net/news/)可以看出作者相当勤奋,版本更新快而且每个版本都会添加新功能。上周作者发布3.3新版本,增加一些新的功能,都相当实用,可见作者开发之勤勉:
1、支持多个会话文件。会话文件是组织文档的方式,等同于虚拟文件夹。很多浏览器只支持单会话文件,everedit已经支持多会话文件,能更方便的组织文件结构。
2、虚拟空格支持。很多编辑器支持列模式,但列模式下如何对齐文字是一个难题。虚拟空格能很好的解决对齐问题,everedit使用列模式会自动使用虚拟空格,绘制一个粗壮的线条增强可视化效果,更容易对齐文字。
3、win 7跳转列表支持。右键点击everedit状态栏的图标可以显示最近关闭的文件和最近使用的会话。
4、大纲视图默认增加多种解析方式:按照从属关系分组/按照类型分组/显示语法文件自定义的符号等,单击右键可以看到。
三、用 EverEdit 处理 Markdown 文件
刚才介绍了Everedit的很多编辑特性,下面我以编辑Markdown文件为例说明Everedit的若干使用技巧。Everedit内置markdown编辑器,这篇文章就是用markdown写的。
1、Markdown文件编辑
Everedit使用快捷目录功能管理文件。在Everedit左侧边栏,可以放置多个目录(包括网络资源,我的文章就放在share共享目录下)。在目录下可以自由的创建编辑文件,不需要引入项目机制,Everedit文档管理方式简单灵活。
如图所示,Everedit的Markdown文档支持相当好。用专有的Markdown符号工具栏,只需鼠标点击就能快捷输入Markdown的常见元素。Everedit支持多窗口,支持Markdown文件预览。我将Markdown文件和预览视图同时在两侧显示。
2、大纲视图和代码折叠
当Markdown文章比较长的时候,可以使用Everedit的大纲视图查看各级标题。也能使用代码折叠功能隐藏过多的内容。
Everedit还有文档地图功能,能鸟瞰文档全貌。
3、可视化效果
Everedit可以识别Markdown的语法单元并加入可视化效果,比如链接会加下划线,列表项目使用蓝色加以区分等。
每次改动文档,Everedit左边会出现红色的框线,提示改动位置。
双击文字,Everedit会高亮所有相同的字词,方便用户查找重复。
四、EverEdit 的其他功能
1、文档比较
Everedit自带文件比较工具,功能相当丰富,可以替代第三方工具。
2、Everedit的快捷键定制
Everedit的每一个功能都能添加快捷键。快捷键为emacs风格,最多可以使用两级快捷键。比如将删除空白行的快键键设置成ctrl+d,ctrl+d,删除单词的快捷键设置成ctrl+d,ctrl+w等。
快捷键定制窗口支持模糊搜索。输入几个字母就能查到常见的功能。
3、其他功能
Everedit还支持写作模式,阅读模式(全屏显示文档),方便用户专心写作。拼写检查,字数统计等常见功能Everedit也一个不缺。
可见Everedit不单是程序员专用的编辑器,普通用户用它编辑Markdown能大幅度提升工作效率,而常见的付费编辑器对Markdown文件优化很少。
五、优惠销售及赠送许可
长期以来,国内用户购买正版软件很难享受售后支持。EverEdit的用户群体主要是国人,EverEdit作者的技术支持和开发热情,还有体贴的国内定价方案(一个用户授权能用在多台主机)为其增色不少。
EverEdit的发展之路还很漫长,国人独立开发收费工具非常不易,它的潜力来源于用户的支持。暑假来临,PlaySoft组织一次特价活动,回馈用户。
优惠价格:EverEdit目前的价格是78元(原价128元)。乐于使用正版软件的用户用一顿饭钱就能支持国内佳软。购买链接是http://item.taobao.com/item.htm?id=40245262698。
赠送许可:EverEdit的功能丰富,上述介绍只为抛砖引玉,大家可以试用EverEdit,畅所欲言,在留言中谈谈自己使用EverEdit的心得体会或者提出建议。还是老规矩,我会选3名发言质量最高的用户,赠送EverEdit授权一枚,聊表心意。
2014年10月10日公布赠送名单:Mee、zhucegeqiu、relx。请直接联系 cy.playsoft@gmail.com