平时开发 Java 都是使用 Intellij IDEA,毫无疑问它是现在最好用的 Java 开发平台,无论是代码补全、智能提示、代码重构各个方面都是顶尖的存在。但是在平时一直都有这样的情况存在,我平时有时候并不会一直打开 IDEA,可有时却需要简单的查看一下公司项目的代码,这个时候要是打开 IDEA 去查看难免有点杀鸡焉用牛刀的感觉,所以一直想寻找一个平时简单查看代码的方式。我现阶段使用的是 vim 来查看代码,当然纯 vim 是不适合查看 java 代码的,至少缺少目录结构、方法结构以及方法跳转,于是我借助 3 个 vim 插件来解决这个问题,一个是 tagbar
一个是 nerdtree
还有一个是 ctags
。
插件安装就是使用 Bundle
这里就不赘述了
Bundle `majutsushi/tagbar`
Bundle `scrooloose/nerdtree`
ctags 在 mac 安装
brew install ctags-exuberant
安装后 .vimrc 配置:
let g:tagbar_ctags_bin='/usr/local/bin/ctags'
我这里 Java 代码的跳转是使用 ctags 来实现的,tagbar 也是依赖于 ctags,所以需要先安装它,并配置 tagbar_ctags_bin
指向 ctags 可执行文件。
我们可以使用 ctags --list-kinds=java
命令查看 ctags 都支持哪些 java 的跳转:
$ ctags --list-kinds=java
c classes
e enum constants
f fields
g enum types
i interfaces
l local variables [off]
m methods
p packages
安装好后我们需要在代码的根目录使用 ctags -R .
命令来生成 ctags 需要的缓存文件 tags,然后再在 .vimrc 文件中配置 set tags=tags;/
表示当前目录找不到tags文件时请到上层目录查找,这样就不用在 tags 所在目录中才可以使用 ctags 了。如果不配置就只能在 tags 同级目录上使用代码跳转功能,配置后可以在任意子目录中使用。
ctags --extra=+q --exclude=android-dto --languages=java -R .
表示索引添加类名,排除 android-dto 文件夹,语言是 java 类型
<Ctrl> + ]
跳转到代码的定义
<Ctrl> + o
返回
nerdtree 配置
" 使用 F2 开关 nerdtree
map <F2> :NERDTreeToggle<CR>
" 每次打开 vim 自动打开 NERDTree
autocmd VimEnter * NERDTree
" + r 定位当前文件所在目录
map <leader>r :NERDTreeFind<cr> <C-w><C-w>
" 每次进入、退出方法的时候切换目录
map <C-]> <C-]> :NERDTreeFind<cr> <C-w><C-w>
map <C-o> <C-o> :NERDTreeFind<cr> <C-w><C-w>
tagbar 配置
nmap <F8> :TagbarToggle<CR>
" 打开文件自动 打开tagbar
autocmd FileType java nested :TagbarOpen
let g:tagbar_ctags_bin='/usr/local/bin/ctags'
更多配置请查看 tagbar wiki