這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
go語言沒有如source insight般優秀的編輯器,試用了多種,vim算最好的,其次可以用liteide(有反查變數函數引用點、修改行變色功能),兩者可配合使用。
下面是一步步搭建vim go語言編輯環境的過程。
ubuntu為例,前提:go開發環境配置好、git安裝好。
安裝 Pathogen
前往http://www.vim.org/scripts/script.php?script_id=2332,找到下方的最新版 Package ZIP 包下載連結;
下載解壓後你會得到一個名稱為 autoload 的目錄,將目錄下的檔案 pathogen.vim 拷貝至 ~/.vim/autoload/pathogen.vim;
編輯 ~/.vimrc 檔案,在頂部加入行 call pathogen#infect()。
安裝 VIM-GO 外掛程式
裝好了外掛程式管理器,就可以開始安裝我們想要的外掛程式了。
- 進入目錄
~/.vim/bundle 後執行命令 git clone https://github.com/fatih/vim-go.git。
- 編輯
~/.vimrc 檔案,加入以下內容(最後一行用于禁止自動下載):syntax enablefiletype plugin onset numberlet g:go_disable_autoinstall = 0
此時,外掛程式本身已經安裝完成,可以根據 github.com/fatih/vim-go 的說明進行使用,其中要指出的是 <C-x><C-o> 為代碼補全提示,且一般需要在輸入 . 操作符之後使用。
預設有一些高亮未開啟,在.vimrc使用以下開啟:
let g:go_highlight_functions = 1let g:go_highlight_methods = 1let g:go_highlight_structs = 1let g:go_highlight_operators = 1let g:go_highlight_build_constraints = 1
高亮效果:
安裝 neocomplete
如果想要即時的代碼補全提示,可以通過安裝 neocomplete 外掛程式來實現,不過它對 VIM 的版本有比較高的要求,具體可以查看它的首頁 github.com/Shougo/neocomplete.vim。
- 進入目錄
~/.vim/bundle 後執行命令 git clone https://github.com/Shougo/neocomplete.vim.git。
- 編輯
~/.vimrc 檔案,加入行 let g:neocomplete#enable_at_startup = 1。這樣就能在啟動 VIM 時自動開啟即時補全功能。
安裝ctags與gotags
sudo apt-get install ctags,然後 go get -u github.com/jstemmer/gotags 安裝 Go 語言的相關解析器。
~/.vimrc 檔案加入以下內容:
let g:tagbar_type_go = { \ 'ctagstype' : 'go', \ 'kinds' : [ \ 'p:package', \ 'i:imports:1', \ 'c:constants', \ 'v:variables', \ 't:types', \ 'n:interfaces', \ 'w:fields', \ 'e:embedded', \ 'm:methods', \ 'r:constructor', \ 'f:functions' \ ], \ 'sro' : '.', \ 'kind2scope' : { \ 't' : 'ctype', \ 'n' : 'ntype' \ }, \ 'scope2kind' : { \ 'ctype' : 't', \ 'ntype' : 'n' \ }, \ 'ctagsbin' : 'gotags', \ 'ctagsargs' : '-sort -silent'\ }
使用:游標在某變數或函數上,輸入gd跳轉。ctrl+o返回
安裝tagbar
裝 tagbar 外掛程式了,和安裝 VIM-GO 一樣,首先進入 ~/.vim/bundle 目錄。然後執行 git clone https://github.com/majutsushi/tagbar.git。
編輯 ~/.vimrc 檔案,加入行 nmap <F8> :TagbarToggle<CR>。這是個快速鍵映射,你可以把 F8 換成任意的。
安裝nerdtree
進入目錄 ~/.vim/bundle 後執行命令 git clone https://github.com/scrooloose/nerdtree.git。
編輯 ~/.vimrc 檔案,加入行 map <F7> :NERDTreeToggle<CR>。如此一來,當你需要瀏覽目錄的時候,就可以使用快速鍵 <Ctrl+n> 來調出瀏覽視窗了。
安裝mark.vim
從http://www.vim.org/scripts/script.php?script_id=2666下載,用vim開啟後輸入:so %即可,詳見:h vimball
在.vimrc中加入以下進行使用:游標在某單詞上,ml高亮單詞。mf在同單詞間跳轉,mn跳轉到下一個任意高亮單詞。
nmap ml <Plug>MarkSet #高亮或反高亮一個單詞 nmap md <Plug>MarkClearnmap mn <Plug>MarkSearchAnyNext #跳轉到任一下一個高亮單詞 nmap mp <Plug>MarkSearchAnyPrevnmap mf <Plug>MarkSearchCurrentNext #跳轉到當前高亮的下一個單詞 nmap mb <Plug>MarkSearchCurrentPrev
安裝visualmask
| 名稱: |
visualmask |
| 下載地址: |
http://www.vim.org/scripts/script.php?script_id=1026
|
| 安裝: |
把下載下來的 visualmask.vim 放到 $HOME/.vim/plugin 目錄下。 |
| 協助: |
見 visualmask.vim 的開頭部分。 |
普通模式下按 ctrl+F2 或者 mm 即可進行設定高亮書籤;按 F2 或 Shift+F2 進行跳躍;將游標移動到書籤上,再按 ctrl+F2 或 mm 取消該書籤。
使用的過程中遇到一個問題,每次添加書籤的時候都會提示:E197: Cannot set language to "en_US"。將 visualmask.vim 的第55行:
exec ":lan mes en_US"
改成以下即可解決:
exec ":lan mes en_US.utf8"g
安裝Ack
先裝ack-grep, sudo apt-get install ack-grep
git clone https://github.com/mileszs/ack.vim.git ~/.vim/bundle/ack.vim
vimrc中加入 :
map <F4> :Ack
游標停留在某函數或變數名上,按F4斷行符號,即可全域搜尋調用處
ctrlP找檔案快捷
http://www.vim.org/scripts/download_script.php?src_id=19448
直接<Ctrl + p>,輸入檔案名稱,可像sublime一樣快速定位檔案。
安裝了以上外掛程式,作為編輯器已經夠用,基本可以無障礙編輯go代碼。但對於代碼走讀,vim不能使用滑鼠和圖形是天生的殘缺,無法像source insight樣產生呼叫歷程圖,對於走讀代碼來說效率較低,只能等待source insight支援go語言。 另:liteIDE是支援找出函數調用點的編輯工具,同時也支援編輯行變色,清楚顯示已修改代碼。但參考關聯性只能找一層,無法看調用樹,可配合vim使用。