平時開發 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