分类: Java
2008-04-13 13:19:38
javabrowser
编辑类文件时, 类资源树是个有用的东西, 可以把类的成员, 方法等等很直观的
显示出来. 在 vim 中也可以实现好像 vc, jbuilder 那样的类资源树, 当然比
那些会简单些, 不过也够好用的了. 就是用 javabrowser.vim 这个脚本实现的.
先到 去找到这个脚本文件.(在这还能找到许多有用的其他脚本)
然后在 google 上找到 ctags 的安装方法,(一般的 linux 系统都带有这个程序)
在 linux 系统中将 javabrowser.vim 拷贝到 ~/.vim/plugin/ 下.
然后在 ~./vimrc 做如下中配置: (即说明 ctags 程序的路径)
let JavaBrowser_Ctags_Cmd = '/usr/bin/ctags'
假如 vim 不是 gui 版的, 那么可以做如下设置, 它将不改变窗口
let JavaBrowser_Inc_Winwidth = 0
重新运行 vim
这下你打开一个 java 文件时, 输入 :JavaBrowser 就能看到漂亮的资源树了.
不过这个文件必须是个实际存在的文件.
在 windows 系统中 可以将 javabrowser.vim 拷贝到 vim 目录下的 plugin 下.
同样也需要设置 JavaBrowser_Ctags_Cmd , 路径为 ctags 程序的路径.
我一般在java 宏文件中设置
nmap:JavaBrowser
imap
这样我一按 F11 键就可以看到这个东西了, 很方便.
在 vim online 中你会发现一个 taglist 的脚本也是用来显示类资源树的, 而且它
运用的范围更广, 对多种语言都适合, 不过颜色似乎没有 JavaBrowser 好看.
jcommenter
编程是肯定需要写注释的, 而编写 java 文件则需要写 javadoc 类型的注释.
jcommenter.vim 这个脚本可以帮助你轻松写注释.
到 vim online 可以找到这个脚本, 下载下来放到你的目录中, 我将它放在
~/.vim/files/ 目录下, 这个目录下真是放了很多东西.
使用时必须先读入脚本, 当然我们也不希望在编辑任意文件时都读入它, 如何
做在第三节中进一步说明. 读入脚本后在不同的地方输入 :call JCommentWriter()
就可以自动写注释了. 使用习惯后十分舒服.
我一般将
autocmd
autocmd 十分强大, 在vim使用经验这篇文章中我已经提到过它了. 现在说明
如何让它来支持 java 文件的编写.
我在 .vimrc 中是这样设置我的 autocmd 的:
:autocmd!
autocmd FileType java source ~/.vim/files/java.vim
autocmd FileType java source ~/.vim/files/jcommenter.vim
autocmd BufNewFile *.java 0r ~/.vim/files/skeletons/java.skel
autocmd BufNewFile *.java normal gnp
说明如下:
取消之前的 autocmd
假如编辑的是 java 文件, 那么读入 java.vim 的宏定义(定义的内容下节说明)
假如编辑的是 java 文件, 那么读入 jcommenter.vim 定义
在新建 java 文件时, 预先将 java.skel 的内容复制进来
在读入 java.skel 内容后, 运行 gnp 这个宏命令
我的 java.skel 内容是这样的:
/*
* -----------------------------------------------------------
* file name : _filename_
* authors : camry(camry.wu@gmail.com)
* created : _datetime_
* copyright : (c) 2004 Vitular Inc. All Rights Reserved.
*
* modifications:
*
* -----------------------------------------------------------
*/
package com.vitular.;
/**
* to-do.
*
* @author camry(camry.wu@gmail.com)
* @version 1.0
*/
public class _classname_ {
/**
* default constructor.
*/
public _classname_() {
super();
} // END: _classname_
/**
* for test.
* @param args commond line parameters
public static void main(final String[] args) {
} // END: main
*/
} // END: _classname_
///:~
运行 gnp 这个宏命令, 主要是为了替换其中的 _classname_, _datetime_, _filename_
这三个变量. gnp命令在 java.vim 这个宏文件中指定.
java 宏定义
这里说明一下我的 java.vim 宏文件是如何定义的.
首先, 文件中包含了另外一份宏定义,
以下是我自己做的一些定义:
" 输入转换
abbr sprt System.out.println
abbr psf public static final
" 将 _filename_, _datetime_, _classname_ 转换成正确名字
" 注意, 以下两行应该是连在一起的一行文字
map gnp:%s/_filename_/\=bufname("%")/ :%s/_datetime_/\=strftime("%c")
/Go "%p$F.bd0f.Dviwx:%s/_classname_/\=strtrans(@")/g Gdd:1 /{
" 输入可以看到类资源树
nmap:JavaBrowser
imap
" 输入就能直接写入注释.
nmap:call JCommentWriter()
imap
" 命令模式下, 在形如 private String s; /** comment */ 这样的文字上键入 gsg
" 可以自动变成 get set.
" 注意, 以下三行应该是连在一起的一行文字
map gsg 0f;dw"aD0wwviw"bxwviw"cx0Da "apa public void set "
cpb3~$a(final "bpa "cpa) { this. "cpa = "cpa; }
public "bpa get "cpb3 ~$a() { return "cpa; } 0