2007年8月19日星期日

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

更加强大开放的通用编辑器 --jedit
2007/06/03 10:14
到 ,可以采用regexp : “ s/<tr[a-z='\-:;0-9.>/”
开始采用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
转换成为
  • line

  • line

  • 只要点击菜单 utilities |Beanshell | evaluate for selected lines
    输入"
  • "+text+"
  • " 即可,这样可以简单的把你的文本文件内部的并行文本转换成为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&useUnicode=true&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) 如果在行尾部可以自动加入
    和自动行添加
  • 前缀,和
  • 后缀,书写changelog.html 日志将会更加方便

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

    author : Sanrex
    mail : Sanrex@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方式
    比如替换

    没有评论: