基於vim搭建Go開發環境
Go作為一門新興語言,發展的如火如荼啊。不過,目前還沒有一個成熟的IDE。本文介紹基於vim搭建Go的開發環境,保證在具有vim的快感的同時,又支援Go的特性。
1. Go環境
首先,是安裝Go。下載安裝包,解壓,然後設定環境變數
GOROOT:指向解壓後的go路徑。
GOPATH:指向用於開發的workspace。Go按照固定的檔案結構組織該資料夾,可以很方便的釋出程式碼,或者從其他倉庫下載程式碼。需要在該目錄下建立src/,pkg/,bin/三個資料夾
PATH:Go生成的所有的可執行程式都存放在$GOPATH/bin下,需要將它加入到PATH中。同時,需要把go tool加到PATH中,即$GOROOT/bin。
完成後,可以在src下簡單寫一個go程式,測試是否安裝成功。該檔案路徑:$GOPATH/src/chosen0ne.com/hello.go
package main
import "fmt"
func main() {
fmt.Printf("Hello, world.\n")
}
執行下列命令執行該程式:go run chosen0ne.com/hello.go
如果有輸出就說明安裝成功。2. Vim的Go外掛
在$GOROOT/misc/vim下,對應的是支援go相關特性的vim外掛,包括:語法高亮,縮排,Godoc支援等。按照方式在readme.txt中有說明。主要是在.vimrc加入以下程式碼:
" Some Linux distributions set filetype in /etc/vimrc. " Clear filetype flags before changing runtimepath to force Vim to reload them. if exists("g:did_load_filetypes") filetype off filetype plugin indent off endif set runtimepath+=$GOROOT/misc/vim " replace $GOROOT with the output of: go env GOROOT filetype plugin indent on syntax on
然後:source ~/.vimrc,開啟一個go檔案,就會看到語法高亮。
3. Vim Tag list for Go
這個外掛列出go檔案中得變數、型別、函式等,並支援跳轉。
需要安裝tagbar外掛,本身這個外掛依賴於Exuberant ctags,但是它不支援go,需要通過gotags。
1) 安裝gotags
gotags是go編寫的,安裝很簡單,直接執行:
go get -u github.com/jstemmer/gotags
就會將gotags安裝到$GOPATH/bin下。2) 安裝配置tagbar
tagbar外掛就和普通vim外掛安裝一樣,可以通過pathtogen或者vundle。安裝完之後,需要對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'
\ }
輸入:Tagbar就可以開啟tagbar,右側的視窗會顯示一系列符號。可以通過Ctrl + ]跳至符號定義處,Ctrl + t返回。效果如下:4. 語法檢測
vim外掛syntastic支援對各種語言進行語法檢查,會標記處出錯位置以及錯誤原因,效果圖:
輸入:Errors會開啟quickfix視窗列出所有的錯誤列表,通過:bp,:bn在多個錯誤之間切換。:SyntasitcInfo會顯示當前檔案對應的語法checker資訊。這個外掛可以簡單配置一下,具體可以檢視幫助文件。
" location list always updated
let g:syntastic_always_populate_loc_list = 1
" collect errors when use multple checkers
let g:syntastic_aggregate_errors = 1
5. 程式碼提示
最後是大殺器。vim寫程式碼被人詬病的就是不想IDE一樣,可以基於語義的程式碼提示。通過gocode即可實現這個功能。gocode同樣是go寫的,安裝方便:
go get -u github.com/nsf/gocode
然後cd到gocode/vim下,執行./update.sh,實際就是把vim外掛拷貝到~/.vim/下。然後編輯go檔案,就會有程式碼提示,效果圖:這樣,Go的開發環境就配置成功了,敬請享用吧^-^