雖然平時比較習慣使用 Eclipse,但一直以來免不了要在 Terminal 下修改一些程式碼,所以偶爾也用用 VIM 這個編輯器。這陣子爬了爬文,也試著將 VIM 加了些外掛功能,也讓 VIM 用起來更方便些。首先要搞的就是讓 VIM 更貼近 Eclipse 或 Source Insight 些。
爬文後,找到一個評價頗高的外掛,就是這個 SrcExpl。
首先,下載了 SrcExpl 最新版本 (5.1) 的 SrcExpl-5.1.zip,將解壓縮後得到的 doc 及 plugin 兩個目錄複製到 ~/.vim 目錄內。
接著,根據 SrcExpl 的說明,若想讓 VIM 像 Source Insight 一樣工作,還需要一個外掛 Trinity (trinity.vim),於是再下載 Trinity 2.0 的 Trinity-2.0.zip,並將解壓縮得到的 NERD_tree.vim 及 trinity.vim 兩個檔案複製到 ~/.vim/plugin 目錄內。
接著,分別依照 SrcExpl 及 Trinity 的說明將以下兩段設定寫到 ~/.vimrc 檔裡。
SrcExpl :
" // The switch of the Source Explorer
nmap <F8> :SrcExplToggle<CR>
" // Set the height of Source Explorer window
let g:SrcExpl_winHeight = 8
" // Set 100 ms for refreshing the Source Explorer
let g:SrcExpl_refreshTime = 100
" // Set "Enter" key to jump into the exact definition context
let g:SrcExpl_jumpKey = "<ENTER>"
" // Set "Space" key for back from the definition context
let g:SrcExpl_gobackKey = "<SPACE>"
" // In order to Avoid conflicts, the Source Explorer should know what plugins
" // are using buffers. And you need add their bufname into the list below
" // according to the command ":buffers!"
let g:SrcExpl_pluginList = [
\ "__Tag_List__",
\ "_NERD_tree_",
\ "Source_Explorer"
\ ]
" // Enable/Disable the local definition searching, and note that this is not
" // guaranteed to work, the Source Explorer doesn't check the syntax for now.
" // It only searches for a match with the keyword according to command 'gd'
let g:SrcExpl_searchLocalDef = 1
" // Do not let the Source Explorer update the tags file when opening
let g:SrcExpl_isUpdateTags = 0
" // Use 'Exuberant Ctags' with '--sort=foldcase -R .' or '-L cscope.files' to
" // create/update a tags file
let g:SrcExpl_updateTagsCmd = "ctags --sort=foldcase -R ."
" // Set "<F12>" key for updating the tags file artificially
let g:SrcExpl_updateTagsKey = "<F12>"
Trinity :
" Open and close all the three plugins on the same time
nmap <F8> :TrinityToggleAll<CR>
" Open and close the Source Explorer separately
nmap <F9> :TrinityToggleSourceExplorer<CR>
" Open and close the Taglist separately
nmap <F10> :TrinityToggleTagList<CR>
" Open and close the NERD Tree separately
nmap <F11> :TrinityToggleNERDTree<CR>
接著,再根據 Trinity 的說明下載了 Taglist 的 taglist_45.zip,並將解壓縮得到的 plugin/taglist.vim 及 doc/taglist.txt 兩個檔案分別複製到 ~/.vim/plugin 及 ~/.vim/doc 目錄內。
接著再修改 ~/.vimrc,讓 VIM 支援滑鼠的動作。爬文的結果多半將它寫成 set mouse=a
,但由於平時我習慣使用 PuTTY 連上 Linux 主機,這樣一來會變得不好用,所以我將它改成以下這樣:
set mouse=n
如此一來,在 VIM 裡按 F8 鍵時,就會開啟如下圖的分割視窗,
若是再按下 F10 鍵,則會執行 ctags 的指令來建立標籤索引檔,讓 VIM 搭配 ctags 來查找程式碼。
ctags --sort=foldcase -R .
其中對於 F10 鍵的這個功能就讓我有點疑惑了,改天再來仔細看看這幾個外掛的細節吧!
最後另外一點,在 Trinity 2.0 裡包含了一個 NERD_tree.vim,但打開看了看,它應該是 2008 年 7 月 20 日發表的 2.13.0 版,不過在 NERD tree 的網頁上目前可以看到最新版本是 4.2.0 版。我在 NERD tree 的網頁下載了 2.13.0 版來看 Trinity 2.0 的 NERD_tree.vim 比較了一下,這兩個檔案的內容有些許的不同,我想應該是 Trinity 2.0 的維護者 Wenlong Che 作了修改吧!因此,我暫時沒有將 NERD tree 更換成 4.2.0 版。
延伸閱讀: