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

这次介绍一下如何在 vim 中更好的编辑 java 文件.
作者: camry.wu@gmail.com

1. javabrowser
编辑类文件时, 类资源树是个有用的东西, 可以把类的成员, 方法等等很直观的
显示出来. 在 vim 中也可以实现好像 vc, jbuilder 那样的类资源树, 当然比
那些会简单些, 不过也够好用的了. 就是用 javabrowser.vim 这个脚本实现的.

先到 vim online 去找到这个脚本文件.(在这还能找到许多有用的其他脚本)
然后在 google 上找到 ctags 的安装方法,(一般的 linux 系统都带有这个程序)

1.1 在 linux 系统中将 javabrowser.vim 拷贝到 ~/.vim/plugin/ 下.
1.2 然后在 ~./vimrc 做如下中配置: (即说明 ctags 程序的路径)
let JavaBrowser_Ctags_Cmd = '/usr/bin/ctags'
1.3 假如 vim 不是 gui 版的, 那么可以做如下设置, 它将不改变窗口
let JavaBrowser_Inc_Winwidth = 0
1.4 重新运行 vim
1.5 这下你打开一个 java 文件时, 输入 :JavaBrowser 就能看到漂亮的资源树了.
不过这个文件必须是个实际存在的文件.

在 windows 系统中 可以将 javabrowser.vim 拷贝到 vim 目录下的 plugin 下.
同样也需要设置 JavaBrowser_Ctags_Cmd , 路径为 ctags 程序的路径.

我一般在java 宏文件中设置
nmap <F11> :JavaBrowser<CR>
imap <F11> <ESC><F11>

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

2. jcommenter
编程是肯定需要写注释的, 而编写 java 文件则需要写 javadoc 类型的注释.
jcommenter.vim 这个脚本可以帮助你轻松写注释.
到 vim online 可以找到这个脚本, 下载下来放到你的目录中, 我将它放在
~/.vim/files/ 目录下, 这个目录下真是放了很多东西.

使用时必须先读入脚本, 当然我们也不希望在编辑任意文件时都读入它, 如何
做在第三节中进一步说明. 读入脚本后在不同的地方输入 :call JCommentWriter()
就可以自动写注释了. 使用习惯后十分舒服.

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

3. 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

说明如下:
1. 取消之前的 autocmd
2. 假如编辑的是 java 文件, 那么读入 java.vim 的宏定义(定义的内容下节说明)
3. 假如编辑的是 java 文件, 那么读入 jcommenter.vim 定义
4. 在新建 java 文件时, 预先将 java.skel 的内容复制进来
5. 在读入 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 这个宏文件中指定.

4. 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(@")/gGdd:1/{

" 输入 <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;dw"aD0wwviw"bxwviw"cx0Da "apapublic void set"
cpb3~$a(final "bpa "cpa) { this."cpa = "cpa; }
public "bpa get"cpb3~$a() { return "cpa; }0

时间: 2024-08-03 01:35:10

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

如何在 android 中设置一个用户名和密码文件

问题描述 如何在 android 中设置一个用户名和密码文件 我设置了两个edittext和一个button.我想设置一个特殊的用户名和密码,当我点击按钮时,如果用户名和密码正确,就会打开一个新的intent,否则显示一个toast.我用的下面的代码显示不同的toast,但是没有运行出来,总是显示 ""incorrect"".如何解决这个问题呢? b.setOnClickListener(new OnClickListener() { public void onC

java-在JAVA JAXWS中使用WSGEN命令让JAVA文件转换成WS文件时,怎么不失败了,求解惑。

问题描述 在JAVA JAXWS中使用WSGEN命令让JAVA文件转换成WS文件时,怎么不失败了,求解惑. //java文件 package com.rdt.ws.project; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import com.mongodb.*; import com.rdt.ws.domain.TabFile; import javax.j

如何在vim中设置tab键变得更简单的操作

  在vim中的可以设置许多的个性键,其中的tab键就是其中之一,但是在vim 中使用着tab键是很是麻烦,是退8个空格的,感觉比较浪费空间.那么要怎么的设置才会更加的简单起来呢!现在一起去看看吧! 百度发现vim的所有个性化设置都是通过一个叫.vimrc的文件控制的,即可以通过配置.vimrc这个文件,告诉vim如何个性化为我们进行服务. 第一个问题是.vimrc文件在哪?locate发现本地没有这个文件,百度发现这个文件一般应该放在用户的根目录下. 于是:echo $HOME,由于我是用ro

Ubuntu 16.04 下如何在Vim中进行文本选择操作和使用标志

基于图形界面的文本或源代码编辑器,提供了一些诸如文本选择的功能.我是想说,可能大多数人不觉得这是一个功能.不过像 Vim 这种基于命令行的编辑器就不是这样.当你仅使用键盘操作 Vim 的时候,就需要学习特定的命令来选择你想要的文本.在这个教程中,我们将详细讨论文本选择这一功能以及 Vim 中的标志功能. 在此之前需要说明的是,本教程中所提到的例子.命令和指令都是在 Ubuntu 16.04 的环境下测试的.Vim 的版本是 7.4. Vim 的文本选择功能 我们假设你已经具备了 Vim 编辑器的

【原创】如何在vim中使用tab进行python代码补全

Pydiction : Tab-complete your Python code         Pydiction 允许你在 Vim 中实现 TAB 代码补全, 可以补全的内容包括:标准的.自定义的,以及第三方模块和包.外加关键字.BIFs,和字符串.   Pydiction 由 3 个主要文件构成:        python_pydiction.vim -- 该文件为 Vim 的 plugin 文件,实现 Python 文件的 TAB 补全功能.  complete-dict -- 该文

如何在Linux中恢复一个删除了的文件

你曾经是否遇到这样的事?当你发现的时候,你已经通过删除键,或者在命令行中使用 rm 命令,错误的删除了一个不该删除的文件. 在第一种情况下,你可以到垃圾箱,搜索那个文件,然后把它复原到原始位置.但是第二种情况又该怎么办呢?你可能知道,Linux 命令行不会把删除的文件转移到任何位置,而是直接把它们移除了,biu~,它们就不复存在了. 在这篇文章里,将分享一个很有用的技巧来避免此事发生.同时,也会分享一个工具,不小心删除了某些不该删除的文件时,也许用得上. 把删除创建为 rm -i 的别名 当 -

如何在 Linux 中恢复一个删除了的文件

你曾经是否遇到这样的事?当你发现的时候,你已经通过删除键,或者在命令行中使用 rm 命令,错误的删除了一个不该删除的文件. 在第一种情况下,你可以到垃圾箱,搜索那个文件,然后把它复原到原始位置.但是第二种情况又该怎么办呢?你可能知道,Linux 命令行不会把删除的文件转移到任何位置,而是直接把它们移除了,biu~,它们就不复存在了. 在这篇文章里,将分享一个很有用的技巧来避免此事发生.同时,也会分享一个工具,不小心删除了某些不该删除的文件时,也许用得上. 把删除创建为 rm -i 的别名 当 -

如何在vim中注释多行

使用查找替换的方法 在linux中,文本每一行的起始标志是^,结束标志为$,因此使用vim搜索^并替换为^#即可. :10,20s/^/#/g 表示将10-20行添加注释,同理取消注释为: :10,20s/#//g 使用录制宏功能 将光标移至想要注释掉的第一行行首->ESC->qa->i->#->ESC->j->q qa: q是开始录制,后面紧跟名字,这里是a,也可以是其他 最后一个q表示结束录制 @a会重复刚刚录制的a 10@a会重复10次 还有一种方法,就是块

Android中怎么在相应的.java文件中获取.xml文件中某个控件的位置?

问题描述 比如a.xml文件中有个TextView控件,那么在相应的a.java中想要获取该控件在布局中的位置,怎么获取?谢谢各位大侠~