您的位置:首页 > 编程语言 > Java开发

如何在 vim 中更好的编辑 java 文件

2004-10-22 00:02 453 查看
[align=right]by camry.wu[/align]

这次介绍一下如何在 vim 中更好的编辑 java 文件

javabrowser

编辑类文件时, 类资源树是个有用的东西, 可以把类的成员, 方法等等很直观的

显示出来. 在 vim 中也可以实现好像 vc, jbuilder 那样的类资源树, 当然比

那些会简单些, 不过也够好用的了. 就是用 javabrowser.vim 这个脚本实现的.

先到 vim online去找到这个脚本文件.(在这还能找到许多有用的其他脚本)

然后在 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 <F11> :JavaBrowser<CR>
imap <F11> <ESC><F11>


这样我一按 F11 键就可以看到这个东西了, 很方便.

在 vim online 中你会发现一个 taglist 的脚本也是用来显示类资源树的, 而且它

运用的范围更广, 对多种语言都适合, 不过颜色似乎没有 JavaBrowser 好看.

jcommenter

编程是肯定需要写注释的, 而编写 java 文件则需要写 javadoc 类型的注释.

jcommenter.vim 这个脚本可以帮助你轻松写注释.

到 vim online 可以找到这个脚本, 下载下来放到你的目录中, 我将它放在

~/.vim/files/ 目录下, 这个目录下真是放了很多东西.

使用时必须先读入脚本, 当然我们也不希望在编辑任意文件时都读入它, 如何

做在第三节中进一步说明. 读入脚本后在不同的地方输入 :call JCommentWriter()

就可以自动写注释了. 使用习惯后十分舒服.

我一般将 <F12> 定义为写注释.

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 <ESC>:%s/_filename_//=bufname("%")/<CR>:%s/_datetime_//=strftime("%c")
  /<CR>Go<ESC>"%p$F.bd0f.Dviwx:%s/_classname_//=strtrans(@")/g<CR>Gdd:1<CR>/{<CR>

  " 输入 <F11> 可以看到类资源树
  nmap <F11> :JavaBrowser<CR>
  imap <F11> <ESC><F11>

  " 输入 <F12> 就能直接写入注释.
  nmap <F12> :call JCommentWriter()<CR>
  imap <F12> <ESC><F12>

  " 命令模式下, 在形如 private String s; /** comment */ 这样的文字上键入 gsg
  " 可以自动变成 get set.
  " 注意, 以下三行应该是连在一起的一行文字
  map gsg 0f;<RIGHT>dw"aD0wwviw"bxwviw"cx0Da <ESC>"apa<CR>public void set<ESC>"
  cpb3<RIGHT>~$a(final <ESC>"bpa <ESC>"cpa) { this.<ESC>"cpa = <ESC>"cpa; }
  <CR>public <ESC>"bpa get<ESC>"cpb3<RIGHT>~$a() { return <ESC>"cpa; }<CR><ESC>0


最后更新: 2004年11月13日 星期六 15点13分4秒

HTML 转换程序: TeX2page 2004-09-11
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息