Notpad

记事本?这不是开玩笑,我是认真的。在早些年使用windows的时候,Notpad几乎是我编辑/阅读文本类文件的唯一工具,并且默认的fixedsys字体在等宽点阵字体中看起来还不错。

现在看来windows自带的这个记事本比linux上的vi差远了,并且发展至今居然令人发指的没有任何改进。由于它缺失作为代码编辑器的很多特性,并且不兼容非windows风格换行符的文本,代码编辑相关的工作Notepad是无缘上场了。

UltraEdit

UltraEdit曾一度被我视为神器。当年在《大众软件》上看到它时就被它惊艳的界面吸引到了。当时没有上网条件,一次偶然的机会在一本杂志的随机光盘上找到了它。代码高亮,行号标注等贴心功能都是我通过UE第一次接触到的。学习C语言期间,它一直是我的主力编辑器。

当然,UE是一款收费软件,虽然当时找到一个破解版相当容易,但在逐渐有了版权意识之后,尽量能不用就不用了。再说后期UE已经变成了一个庞然大物,再也不是我印象中小巧的代码编辑器了。如今电脑中还有,但只是在查看二进制文件时不得已才用一下,因为一直以来都没找到一款好用的二进制文件编辑器。

Programmer's Notpad

开始使用Programmer's Notpad是因为玩NDS自制软件。对普通爱好者来说devkitpro基本上是当时唯一的选择,而PN就是它内置的一款编辑器。打开一个示例项目,菜单选择"make",只见输出窗口一阵滚动,一个可运行的nds文件就生成了。虽然事后知道这都是make工具的功劳跟PN没有半点关系,但当时确实因此被PN深深吸引到了。

PN作为一款优秀的编辑器,一大特点是代码高亮支持的语言特别多,甚至支持比较冷门的Lua。但一直困扰我的问题是它对中文支持不好,光标跨中文移动是每次半个字,退格键删除也是每次删半个,剩下半个汉字的乱码……不知是随着版本的更新,还是后来知道了去设置字符编码和多字节字符的支持,这个问题已经不存在了。

PN免费、小巧、启动速度块,并且通过api文件能一定程度支持自动补全,还有后来的版本加入了官方支持的中文界面。很久以来我都对PN爱不释手,并且推荐给周围的同事用。只是最近好像PN不怎么更新了,Whatever,现在的PN已经非常好用了。

EditPlus、Notpad++

把这两个放在一起说,首先是因为我接触它们的时间差不多,并且很容易把它们搞混。另外就是虽然它们都很优秀,我却没正式拿它们做为主力编辑器使用过。还有,这两个编辑器我都曾见周围有同事在用。

EditPlus不是免费软件。和UE一样,如果用破解版我还不如去用UE,对吧?

Notpad++的作者是台湾人,据说当时由于作者在Notpad++官方站点上发布台独言论,遭到大陆程序员的抵制。当时多少受到这个影响而对Notpad++心生厌恶,但现在我承认带着政治偏见去看待一款代码编辑器是不对的。这么多年了,作者一直坚持维护一款免费软件,这本来就是一件难能可贵的事情。

Vim、Emacs

把这两个放在一起,相信没有什么疑问。只要知道其中一个,就一定会听说过另外一个。IT界流传着很多趣闻和传说,Vim和Emacs之争无疑就是其中一个。我觉得有必要声明一下,之所以把Vim排在Emacs前面仅仅是因为我接触Vim较早。

Vim,号称编辑器之神,以”快“闻名。它通过在各种模式间切换,手不用离开键盘,甚至不用去碰方向键就可以完成几乎所有操作。唯一的问题,作为一款编辑器来说,学习曲线也太陡了些,一个新手甚至初用Vim连正常打字都做不到。有的人认为这个学习过程虽然艰辛但绝对超值,另外有些人则无论如何适应不了选择了放弃。至于我,倒是学习过一段时间,没有坚持使用,如今只会一些基本操作。在linux命令行下修改个配置文件还是没问题的,拿来写代码?还是饶了我吧。

Emacs,号称神的编辑器,以功能强大闻名。网上甚至有”伪装成编辑器的操作系统“之称。它没有Vim那么多模式,和普通编辑器一样,直接打字就可以了。它的强大功能通过各种各样的组合功能键来提供,最常用的就是ctrl键了。Emacs经常被调侃的一点就是小手指头劳动强度非常之高。当然有一个方法是用软件把Ctrl键和Cap键对调,我正在用的这款机械键盘甚至直接提供了对调这两个按键的功能。

Vim和Emacs都提供了强大的扩展能力,Vim可以通过扩展打造成一个IDE,而Emacs更是号称你可以在Emacs上做”任何事“。不过对我来说这两个神器都太难以驾御,没有强大的动手能力它们也都只是普通的文本编辑器而已。

Sublime Text 2

Sublime Text 2是个收费软件,并且不便宜。好在它的试用版并不限制试用时间并且也只是很小机率在保存文件的时候弹窗提示一下而已。不过试用之下,发现这在是对我来说最趁手的神器啊。

ST2默认就是我喜欢的暗色主题,虽然折腾过其他配色,不过最终还是觉得默认的最顺眼。它的滚屏是象素级的,感觉非常顺滑;它支持超多的语法高亮语言,包括极少有编辑器支持的Scala;它支持基于语法文件和上下文的代码提示和自动补全,虽然有时候模糊匹配的结果不是很让人满意;尤为强大的是安装一个包管理器只后,可以很方便的在线安装各种插件。

平时工作中前后端的编码工作都要涉及,有时需要同时编写Java、HTML、CSS、JavaScrip、XML、甚至还有properties、yaml等。并且现在已经习惯了tab键补全,用zencoding写HTML(当然也是用tab键展开)。习惯之后感觉以前用的什么Alt + /还有Ctrl + Space这种提示和补全的快捷键简直弱爆了。而这一切,ST2都能胜任。它还提供了基于文件夹的简单项目管理功能。简直就可以当成一个简易IDE来用了。

ST2确实也有一些问题。可能它的编辑区域是自己定制的,跟输入法在兼容性上有些问题,Windows上表现为输入法浮动框的光标跟随功能失效了,这还算好的,起码还能正常打字,在Ubuntu上根本就没办法用输入法。另一个问题是它的快捷键,在不同的操作系统上,它绑定的快捷键居然是不同的!这让经常在两个操作系统上用ST2的人很难适应。

如今Sublime Text 3已经发布了,不但价格更贵,并且已经不再提供免费试用。想到Navcat也是不再发布免费的Lite版,看来这是大势所趋啊。

EverEdit

EverEdit是我最近才发现的一款编辑器新秀。看界面感觉和Notpad++比较像,貌似作者确实有意要将EverEdit打造成比Notpad++更好用的编辑器。试用了一下感觉还不错,一个轻量级的文本编辑器能做到这样已经很不容易了。当然比起Sublime Text 2还有差距,但是别忘了,人家是商业软件。

用了一段时间,EverEdit还是有一些问题。比如自动探测字符编码,对于一个内容是纯英文的文件,会自动识别为ANSI,继续输入一些汉字后保存,实际保存的是GBK编码而不是UTF-8;支持Zencoding但是不能用tab键展开;无法用api文件进行代码提示和自动补全;Markdown的代码高亮也有问题。当然这些要求有些吹毛求疵,不过除此之外能挑的问题确实不多了。

总结

总是周期性的想要找一个理想的代码编辑器,经常会有惊喜,但是每次都不完美。总结一下大概是免费的不好用,好用的不免费,即使有既免费又好用的学起来又太难……开发一个代码编辑器需要投入大量精力,在这里,我要向这些我曾经用过的或正在用的编辑器的作者们致敬。



blog comments powered by Disqus