更加强大开放的通用编辑器 --jedit

48 views
Skip to first unread message

pi1ot

unread,
Jan 19, 2009, 11:28:21 AM1/19/09
to jEdit中文用户组
title : 更加强大开放的通用编辑器 --jedit
author : Sanrex
mail : San...@163.com
site : http://egovinfo.org
createDate : 2003-5-18
modifiedDate : 2003-5-26
我对编辑器的需求就是在整个工程过程的各个环节中,大部分时间只要和这一个软件打交道,那么有那些环节呢

建立一个java 环境的一般完整过程
1 目录组织和工程管理
2 编辑,创建
3 compile
4 run
5 debug
6 test by junit
7 jar generate
8 ftp / publish
9 cvs 接口
10 数据库访问
11 外部工具运行

因此我希望我得编辑器能够在具备强大的编辑能力外,还应该有以上的所有功能,或者和以上功能的一体化的接口。jedit应该是我的一个选择。

安装很简单,下载jedit.jar ,执行java -jar jedit.jar 即可,当然你需要java runtime

编辑能力:
Rectangular Selection
ctrl +mouseSelect建立 按列选择方式,由于按字数建立,因此在中文英文混合时会显示比较怪,看起来并非一个矩形。
而实际上还是很好用
编辑速度体验
在我的notebook中,256M内存启动eclipse 大概8秒,启动jedit 4秒,editplus 可以忽略,uedit :3s,启动
时间不是很大的问题,
最大的问题是在edit过程中的反映速度,这个方面jedit完全出乎我的预料,非常快速,好像并非java写成的,(s是不是java程序一定很慢
呢?)和editplus的编辑体验对我来说没有任何区别,
而eclipse 就没有那么爽了,总是觉得牵牵绊绊的。eclipse 应该有一些优化的余地,但是我首先得到的是缺省情况下的感受。
{}匹配
帮助避免出现{}不匹配的语法错误,只要注意代码缩进,这个功能可有可无,有了反而碍眼。
fold 强大的fold功能,这个只有gvim才能比较,ep,ue都没有这个功能。如果直接看看jedit的源代码,可以了解jedit作者的使用
fold的方式。使用得当,阅读代码会十分方便。
markers 应该比较有意义,ctrl+t X 定义mark,ctrl+y X ,转移到mark,X 可以时任何键,这是最快的使用方式;还有
更加灵活的方式,
但是这是我最喜欢的方式
不支持文件拖放
clipboard 的增强,应该是个不错的想法,不过没有试过。
Find & Search
jedit不支持whole word方式,目前可以采用regexp方式来解决这个问题
regexp 在jedit里面使用的非常顺利,可以可以incremental search bar ,方便书写regexp时,可以立即看到
regexp的查询结果,帮助调试和修改regexp,非常方便
相反,urtraedit和editplus 使用起来不是那么方便,不知道是不是对regexp支持不同,而且没有incremental
search .
不知为何,没有whole word的支持,目前最强大的还是ue,可以多文件替换。
为了将word中的一个表格导入形成一个干净的标签的html,采用regexp方式
比如替换<tr ....> 到<tr> ,可以采用regexp : “ s/<tr[a-z='\-:;0-9. ]*>/<tr>”
开始采用vim替换,虽然可行,但是vim不能自动替换所有的情况,非常不方便,也采用了editplus和uedit,好像他们的regexp替换根
本不起作用
最后采用的jedit,在这个方面表现非常不错,他的incremental search bar 和vim的一样方便调试和立即查看regexp的
结果,

支持find/replace dialog方式,具备了几个编辑器的优点。
buffer 管理
ctrl+w 关闭当前buffer
ctrl+q 关闭窗口
ctrl + 1 取消切分
ctrl + 2 纵向切分
ctrl+ 3 横向切分
在功能上不如emacs 强大,在实用性,和人机操作方面要比emacs好的多了,相信jedit的开发者一定是emacs的用户,
那么多的功能来源emacs,但是有很大的创新,可惜不能访问jedit.org,不然也许可以了解作者创作jedit的原因,来龙去脉。

jedit 的目录管理,是一个强项,比起ultraedit,editplus ,gvim 都方便的多。
在复杂的状况下,最老的FileOpenDialog一定是不合时宜,简单的treeDirectory&List+project 的
editplus也是太简单,SourceInsight的search做的不错。
最好的目录管理我认为应该有Project file, Favorite
Directory&List ,Search ,Filters ,TreeView &Listview和他们的合理组合。那么jedit达到了这
个要求,
jedit 的FileSystemBrowser 如此精美,以至于即使Project管理方式,我也可以很少使用。
File System Browser | Favorite 方便在几个目录内切换来说非常方便,比如
PROJECT-HOME/src/com/app1 ;
PROJECT-HOME/src/moreapp ;
PROJECT-HOME/web/app1 ;
PROJECT-HOME/web/moreapp ;
PROJECT-HOME/docs/logs ;
PROJECT-HOME/docs/article ,
把这个目录列表加入你的Favarite 内即可
其他的几个编辑器里面真的感到非常头疼等等,这个大概又是jedit独有的功能
目录内部的newFile,rename file功能
FileSystem可以不必关闭
emacs 和jedit一样可以统一方式访问ftp,fileSystem,但是很可惜的,emacs缺乏现代的程序的特征,比如
Dialog ,Common Control ,ToolBar 大部分工作都需要使用命令,
不管常用的还是复杂的,非常缺乏层次感;而且我没有测试成功在windows下下中文录入的方法。
ref:"type:article;author:Sanrex;Title:emacs+jde 开发java应用程序"
更多细节,用了才知道。
打开的文件会有一个下划线,一般和没有打开的文件区别
ctrl +` 仅仅切换两个最近的文件,更多文件在alt+` 查看,查看时,每次选择变化,无需确定,即可在不buffer中立即显示出来
文件可以执行rename ,delete,new操作,但是在打开时不可以如此
外部工具运行
这方面ue,ep 做的很好,而且可以捕获命令的标准输出,但是我们对editplus + ant的java开发方式的评价是很清爽,没有什么负担,
而且采用这种方式有很长时间。但是由于editplus简单的不够灵活的目录和工程管理最后放弃,仅仅在简单的小修改才会使用它。
jedit 提供专门的控制台,并且和ErrorList 接口提供真正的可定位的编译错误列表,编译完成后可以通过下划红线标注错误位置。
开放性
opensource
二次开发,beanshell
比如经常需要把
line
line
转换成为
<li>line</li>
<li>line</li>
只要点击菜单 utilities |Beanshell | evaluate for selected lines
输入"<li>"+text+"</li>" 即可,这样可以简单的把你的文本文件内部的并行文本转换成为html 的ul 显示
我的工程 changelog.html文档就是如此写作。

editplus 中有一个小功能,插入当前日期(key : ctrl+d) 对于写log非常方便,jedit没有这个功能但是我们可以加入它
试着执行下面的代码,在beanshell中
import java.text.DateFormat;
String newText = DateFormat.getDateInstance().format(new Date());
textArea.setSelectedText(newText);
创建 SimpleInsertDate.bsh 到JEDITHOME/macros/text/
click Macros | Rescan Macros
click Macros | text | SimpleInsertDate
当然还是不够方便,那么 click utilities | global Options | jedit | shortcuts |
macros | InsertSimpleDate | c+m c+d
现在按键盘 c+m c+d

插件:

jedit 的插件结构非常完善 ,表现在用户只要把下载的插件jar'放置到 JEDITHOME/jar/,用户做了这简单的动作之后,就可以得到
自动的菜单关联,配置信息,还有help的集成,是的安装完成插件后,你马上可以在jedit help中发现plugin的相关帮助。
(在不知道这个情况之前,我是在jar文件内部查找html帮助文件)
另外jedit的plugin manager ,看起来只要点击update plugin ,install plugin即可跟着向导走了,但是
因为jedit.org 我一直没有连接上,因此这个功能我没有尝试,目前都是在jeditplugin central
@sourceforge.net 中下载jar插件文件

sql plugin :
这个plugin大概是jedit都有的特征,其他比如ftp,ant集成,emacs,vim 都支持,但是好像没有那个editor连数据库的访问
查看也支持,但是实际上这个需求应该说每一个人搞数据库的人都需要,我就经常在eclipse和mysql cc之间切换,而且mysqlcc给的功能
太多,
我需要的就是我输入一个sql,它返回一个结果。jedit的这个plugin只是我希望了那个样子。

刚刚安装时在 plugin | sql | choose server type 空的,没有办法选择,而在文档中jedithome/jar/
sql.jar/userguide.html指明:

some configuration files - for Oracle, MySQL, PostgreSQL, DB2,
Sybase,
Microsoft SQL Server are bundled with the plugin

说明这些基本类型已经在了,是的,仅仅在sql这个菜单里面做工作是否没有作用;
最后发现在projectview里面可以创建数据库连接
把 user pass host port 等等url信息。
比如我的mysql,数据库DBNAME,可以填写成为:
pass:
user:root
dbName : DBNAME
extra :?
autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=ISO8859_1
回头把 choose server type 选择好。
现在可以执行sql了,sql菜单内的execute有两种方式,execute selection ,execute buffer ,在你的当前
buffer 中填写一条语句,比如select * from yourTableName ;
如果sql正确,那么sql result set 会显示出来,不知道为什么,里面仅仅了0 request running ,把它放大,才会发现
resultset已经显示出来了。
中文也显示出来了
不错不错

几个插件下来,感觉多个窗口切换还是很麻烦,使用dock帮助你更好的组织窗口 : utilities | Global options |
jedit | docking .
目前我的办法是:
把File system browser ,project Viewer ,Ant farm 停靠到left
把Error List ,SQL Result Set 停靠到bottom ,对于不做java编程或者没有数据库访问的,也不必停靠这些
plugin了

我目前采用的plugin列表

XSLT-0.4.1-bin.zip xml+xsl (by xslt)= xml (比如html)
AntFarm-1.3.1.zip 和Ant的接口
ClassWizard-0.5.1-bin.zip 类生成wizard
CommonControls-0.8-bin.zip 一些常用的界面对象
Console-3.5-bin.zip 可扩展控制台,因plugin而不同,目前我的console可以执行Ant ,system (dos
shell) ,Cvs ,beanshell,tomcatSwitch ,不同的console可以执行的命令不同,一般进入不同的console
都会有help信息
Debugger-0.6.1-bin.zip
EditorScheme-0.4.2-bin.zip 可更换不同的font color ,background color 等
ErrorList-1.2.3-bin.zip compile ,ant 之后可能生成的ErrorList ,和console不同在于,
errorList可以帮助定位错误所在的源代码位置,而不是仅仅显示出来而已
FTP-0.5-bin.tgz 如同File System Browser 一样管理open from/saveas 文件到ftp
server
JakartaCommons-0.2-bin.zip 基本类,提供command line 分析等基本服务
JarMaker-0.4-bin.zip 形化创建jar文件
JavaInsight-0.5.1-bin.zip 大概是class反编译
JBrowse-1.4.4-bin.zip 提供类,方法的树图显示,快速定位类,函数..
jEditCvs-0.4-bin.zip 和cvs接口
JImporter-0.4.0-bin.zip 管理文件的Import,比如把java.io.* 展开成
java.io.FileReader
JTools-1.3-bin.zip
JUnitPlugin-0.0.2-bin.zip 和junit接口
ProjectViewer-2.0.1-bin.zip 工程管理
SideKick-0.2-bin.zip 结构化显示文件,比如xml树图
SQL-0.97-bin.zip 在jedit里面通过输入sql直接查看结果集合,是不是非常集成。
SwitchBuffer-1.0.0-bin.zip 切换buffer
TaskList-0.4.2-bin.zip
TomcatSwitch-0.6.2-bin.zip 提供tomcat的start ,restart ,stop
XML-0.11.1-bin.zip 提供xml方面功能
评价
快速的,多层次的,丰富灵活选项,可以二次开发的,充分界面定制的通用程序员编辑器。
我非常欣赏它的多层次,表现在:
以二次开发为例:
A 通过beanshell
a1 记录macro
a2 宏编写
B 通过java
B1 使用plugin
B2 编写plugin
B3 jedit代码修改
如果需要二次开发,你可以在这么多的选择中做一个合适的选择,而且这两个层次也同样具备互通性,而不是学习新的层次就有抛弃老的层次
因为beanshell本来就是java的脚本语言。
在比如mark ,你可以使用最简单的ctrl+t X ,ctrl +y X 的组合,也可以使用Marker菜单中提供的丰富功能选项
同样的例子还有clipboard。
在丰富灵活选项这方面,我想对于窗口管理的方法非常不错,现在窗口比较少的情况下,可以使用float方式,在taskbar上切换,如果同时显示的窗
口比较多,而且会和其他应用的窗口同时列出来
那么会显得非常混乱,这个时候需要的就是dock方式了。在dock方式中,也可以选择dock到left ,right ,bottom,top 多
个选项,而不同窗口适合列在不同的位置,比如横向比较长,应该dock到bottom或者top
在纵向占位的应该考虑dock到left,right位置。
所有的shortcut可以定义,充分按照你的要求。在基本使用后,多看看 utilities |Global Options 很有必要。
以前写的关于java开发效率的文章,是研究这么多编辑器的动因
我的开发平台: tomcat4 + jdk1.4 + james + cvsServer +mysql
(1) 经常访问的目录,列出来,看看是否可以提供效率
jspCompile:TOMCATHOME\work\Standalone\localhost\
tomcatLog: TOMCATHOME\logs\stdout.txt
Src : PROJECT-HOME\src
Web : PROJECT-HOME\web
以上目录可以使用windows的文件收藏,editplus的工程文件管理,user tools 等实现一部分,
另外 editplus | preference|Working directory follows active document,本来也是
很好的功能,但是好像没有实现

(2)经常做的工作
导入数据:RUNTIME_HOME\mysql\bin\mysql DBNAME < SQLFILE
commandline 方式执行sql RUNTIME_HOME\mysql\bin DBNAME
tomcat/james/mysql 启动管理
RUNTIME_HOME\srvadmin.exe ,START ,STOP ,RESTART
或者全部restart,全部reverse state ,一定可以提高效率,
当然也包括linux : tomcat stop /tomcat start ,such as stop start dance !
或者采用net stop service_name
发布文件
通过update2k ,cuteftp 传递文件。需要很多的主机配置条目,包括本机,各个客户机器
数据库管理 mysqlcc 和ftp一样,有很多配置项目

(3) 如果在行尾部可以自动加入<br > 和自动行添加<li>前缀,和</li> 后缀,书写changelog.html 日志将会更加方
便

请随意转载,但注意文件的完整性

Reply all
Reply to author
Forward
0 new messages