jEdit,寻找“最好”的编辑器
我一直在寻找最好的编辑器。Emacs和Vim都是很嚣张的编辑器,和Notepad一样,一般可以当作炫耀的资本。
“哥们,用啥编辑器?”
“嗯……Notepad++”
“你丫不爱国!”
“UltraEdit……(或其他商业编辑器)”
“鄙视,用的盗版吧!”
“Emacs!”
“牛人!”敬仰之情如滔滔江水,连绵不绝……
“Vim!”
“强人!”敬仰之情如滔滔江水……
不过Vim和Emacs经常吵架,说服对方使用自己,企图一统天下。虽然Notepad表示没有压力,但是其他编辑器因为不在一个等级上,想有压力都不行。
其实我们对有些编辑器神话了。Vim和Emacs不过是古老的编辑器而已,多几个快捷键也是迫不得已,因为那时没有鼠标。而且我们认为越是难用的软件越牛逼,其实是在折磨你自己。你能用Emacs,不一定能看得懂Emacs的源代码;你能用Vim做开发,也不一定能写出什么像样的程序。毕竟Windows下很多程序都是用Visual Studio写成的。
我在Windows下用Vim几年了,用来写程序,加密个日记之类的,都挺不错,也很方便。网上xBeta的网站推荐非编程人员用Vim,写的教程很漂亮。我也经常玩Linux,完全没有压力,因为会Vi和正则表达式,在Linux下就会方便很多。
Vim相比Emacs,尤其是在Windows下,方便好用的多。不过也有缺点。Vim只有在utf-8编码下才能中英文使用不同的字体,其他编码只能使用一种字体,也就是说,要不你就中文乱码,要不你就用中文字体显示英文(我哪个都受不了,终于把所有的东西都搞成utf-8,这在Linux下倒也没事,在GBK的Windows下,偶尔就有点麻烦)。Vim脚本执行速度有点慢,插件也不太实用。我安装过CppComplete,偶尔能用,偶尔不能用,大部分时间都不能用。我安装了两个插件c-support和perl-support,Vim的加载时间就和Emacs一个量级了,实在不能接受,只能不用插件。好在Vim本身就挺好的,用不着太多插件。Emacs的速度慢,估计也和他自带的解释器性能有关,插件一多(Emacs大多数功能都是脚本实现的),估计就不行了。记得某个Vim插件的作者使用Python脚本而不是VimScript,他说Python脚本的速度是VimScript的几十倍。
Emacs我也体验过一段时间,配置好了确实好用,但是完全没有传说中的那么神奇。我一开始只是用来学elisp。就我而言,Emacs确实是一个优秀的elisp解释器和开发平台,但是确实是一个糟糕的编辑器。Emacs的快捷键有什么让人钦佩的地方吗?高级一点的编辑器都可以为所有的动作设置快捷键,没什么了不起。Emacs的界面做的也够差,配置也很麻烦,插件的安装也很糟糕。
我看过Emacs的核心源码,用来学习elisp的实现,甚至想写一本《Emacs源码剖析》,赚点外快,因为目前还没有人去写这方面的东西。后来就放弃了,一是没有太大意义,使用Emacs的人,一种确实时间长了,习惯了,另一种就是拿着Emacs装逼,实际上平时也不怎么用的(估计只有装逼的人会买我的书);二是Emacs的源代码有点混乱,到了图形界面的部分,把Windows的结构什么的全部define成X Window的,实在想不通,即使想保持核心源码的一致性,也不用这么变态吧?Emacs居然能在Windows上成功运行起来,我终于发现,Emacs确实是变态程序员写给变态用户用的变态编辑器!
jEdit是个低调的编辑器。没多少人关注,却不断发展。最近我终于熟悉了jEdit,虽然很早之前就用过,但是因为不能显示中文就放弃了。后来发现显示中文不是jEdit的问题,而是Java运行时的问题。改一下Java的运行时配置,就可以完美显示中文(以及中英文字体混合使用)。于是我下载了几个常用的插件,经过简单的配置,jEdit已经很好用了!
jEdit的文档很详细,学习没有压力。jEdit很现代,没有那种折磨人的快捷键(当然也有相当数量的快捷键,并且可以为所有的宏和编辑动作设置快捷键)。jEdit很强大,她的脚本(宏)语言是Bean Shell,一个Java解释器,想想吧,你可以通过Bean Shell调用所有的JDK平台的功能。jEdit插件是编译好的Java文件(而不是宏,只有小功能才用宏实现),一般体积小巧,安装方便,速度优势没得说,jEdit安装十来个插件,启动速度不会慢到哪。jEdit也有Server架构,可以后台运行,加快启动速度。jEdit使用Socket通信,但是看看帮助文件对安全问题的解释,你就会开心一笑,jEdit的Server要求64位整数随机密钥认证,只有本地的Client知道,而且一次错误就会使Server关闭。
jEdit的插件都很有用,比如安装了Scheme插件,就可以系统调整编辑器主题(代码高亮,不是Swing主题)。自带的有很多不错的主题,比Vim的强多了。也可以安装LookAndFeel插件,带了很多漂亮的Swing主题(当前有Bug,不过一般自带的就够了,除了代码高亮,外表的是浮云)。还有Command插件,有BeanShell和Windows的Console,Dock在下面,好用的很。其他如ProjectViewer,FileBrower、ErrorList、JavaSideKick(Java代码提示和补全,Java文档结构显示)、甚至IRC插件,都很好用。具体的太多了,不细说了。
Vim的加密功能挺好用,后来发现jEdit有两个宏Encypt_Current和Decrypt_Current,使用Java的加密功能,用MD5和DES算法加密当前文档,虽然加密后的文件和Vim加密的文件相比,体积大了些,但安全性应该比Vim好吧。
jEdit安装文件只有4M多,插件大多体积都很小,而且都是jar文件。和Vim、Emacs几十兆的安装包,和一堆脚本文件比起来,小巧干净了很多。如果你能去看jEdit的源代码,清晰度自然也不必说。加上jEdit利用了Java平台和BeanShell,其强大的扩展性能更不必说。我只想说jEdit无论是功能、扩展、跨平台、美观,都是我目前看到的最令人满意的编辑器。
简单配置后的jEdit: