這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
http://www.philo.top/2015/02/06/golang-%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E5%BB%BA%E8%AE%AE/
開發環境的必要特徵
- 專案管理
- 快速檔案跳轉
- 自動語法檢查
- 自動補全
- 尋找定義
- 啟動速度快
- 如果自己有需求的話外掛程式可以隨便寫
- 靈活的回合組態
(project,lint,hint,autocomplete)
要實現上面幾點我們來一步一步的配置。
我的大環境
- OSX
- GO 1.4
- HomeBrew
go 環境安裝
這一部分是最重要的,如果沒有它,每次build的時候出現 too many errors 心裡真的是非常難過的。
環境配置:(golint,gooracle,mercurial)
- 安裝mercurial: brew install mercurial > 這個東西是用來做版本管理的,也是下載代碼的工具類似git,貌似google的項目用的挺多的。
- 安裝golint:
shell $ go get github.com/golang/lint $ go install github.com/golang/lint
- 安裝gooracle
shell go get code.google.com/p/go.tools/cmd/oracle
- 安裝goimport
shell go get golang.org/x/tools/cmd/goimports
- 安裝gocode
shell go get -u github.com/nsf/gocode
- 安裝 godef
shell go get -v code.google.com/p/rog-go/exp/cmd/godef go install -v code.google.com/p/rog-go/exp/cmd/godef
安裝環境的時候經常會出現下載不下來的問題,大概是我網路不好吧。串連google經常出現問題。 > 解決方案: > golang中國的下載頻道中有一個第三方包的下載工具,只要輸入地址之後人家會給你提供下載tar包的。 > 放到gopath中就ok了。 > 此步驟只能替代go get的步驟,最後還是需要go install
go install 之後會在 $GOPATH/bin/
中出現各種工具檔案
- gocode 提供代碼補全
- godef 代碼跳轉
- gofmt 自動代碼整理
- golint 代碼語法檢查
- goimports 自動整理imports
- oracle 代碼callgraph查詢(plugin中還在todolist中,但是不配置一直報錯。實在煩。)
最後不要忘記複製上面的命令到 $GOROOT/bin/下面
- 最後的配置結果(安裝完之後 Package->Go Plus->Display Go Information)
Cover Tool: /usr/local/go/pkg/tool/darwin_amd64/cover Vet Tool: /usr/local/go/pkg/tool/darwin_amd64/vet Format Tool: /Users/Li-jianying/git/bin/goimports Lint Tool: /usr/local/go/bin/golint Gocode Tool: /Users/Li-jianying/git/bin/gocode Gocode Status: Enabled Oracle Tool: /Users/Li-jianying/git/bin/oracle Git: /usr/bin/git Mercurial: /usr/local/Cellar/mercurial/3.2.1/bin/hg PATH: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
沒有紅色的行就沒有問題了。
專案管理,自動檔案跳轉
- 外掛程式:project-manager >這個外掛程式是非常hot的,在atom.io的首頁上排名還是非常靠前的。
- 使用細節:
- 配合tree view
( cmd - \)
開啟關閉project file
- 搜尋專案檔
( cmd -t )
> 輸入的時候按照順序輸入關鍵字 > 比如說 user模組的controll中的go原始碼 > 搜尋的時候可以使用多個快速鍵 =》 user controll go > 就可以準確的找到原始碼了
- 開啟項目列表
( ctrl-cmd-p )
> 然後就會顯示出來一個項目列表斷行符號就可以開啟項目。
總結: > 感覺這個外掛程式的treeview用途的確不是很大,因為正常項目的專案檔會很多。 > 不過是快速開啟項目(檔案夾)是非常方便的,配合快速開啟檔案還是相當爽的。
按快速鍵之後的效果展示:
自動文法檢,自動補全
外掛程式go-plus,autocomplete-plus(dependance),gocode 使用 apm install 安裝就可以了。速度還可以。
使用細節 在儲存的時候
- 會自動補上imports
- 會自動整理代碼 > 比如說 a:=5 會變成 a := 5 兩個空行自動變成一個空格
- lint自動檢查語法錯誤(go build 的錯誤都會顯示出來)
- vet會自動檢查文法拼字建議 > 函數,結構體 會提示補上注釋。 比如說會提示你函數前面需要加入godoc類型的注釋: // functionname 注釋的第一行需要使用雙斜杠注釋+空格+函數名+空格+簡短的函數功能說明。
使用細節: 在編輯的時候
- go-plus會配合autocomplete-plus會自動補全包名字(tab補全,斷行符號不行,這個真心舒服)
- 包名.之後輸入方法名開頭幾個字母會給出補全建議。
安裝之後的示範(類似go-plus官方示範)
gocode 外掛程式自動補全示範
- 這個外掛程式繼承自autocomplete,因為年久失修。api用的是老版本,所以一直都會出現api警告。(我是實用主義,視而不見)
- gocode如果找不到就進入代碼找到檔案autocomplete-view.coffee 中105行寫成絕對路徑就肯定沒有問題了。
- 綁定快速鍵,因為這個外掛程式沒有綁定快速鍵的檔案(keymap)所以需要在keymap.cson下自己手動綁定配置如下:
json '.active.pane': 'ctrl-;': 'gocode:toggle'
效果示範
尋找定義
外掛程式 godef
使用細節: 游標在目標代碼上的時候,使用快速鍵ctrl-k
跳轉到目標代碼的定義代碼上。
靈活的運行
- 安裝外掛程式atom-runner
- 修改原始碼中的go run運行為
go: 'sh [絕對路徑到你的全域run腳上] '+atom.project.rootDirectories[0].path
- 指令碼的 $1 會是你項目啟動並執行路徑。然後你的所有項目都可以添加一個run.sh 來指定一個構建啟動並執行方案。
- 做完之後不管當前在查看什麼檔案都可以運行整個項目。
- 其他語言也可以這樣做。畢竟單個檔案的項目不是很常見(開發的時候)
總結
- 我這裡只是總結了我用的所有的golang相關的atom外掛程式。
- 要相信golang使用編輯器就夠用的事實了。因為
go tool
實在是太好用了。
我的key map
cmd-d
duplicate line
cmd-w
關閉標籤
cmd-r
檔案內的標籤列表
cmd-e
使用選中的內容做搜尋的pattern
shift-cmd-f
project內部搜尋,這個非常實用。command 配置(keymap.cson) >json '.platform-darwin atom-text-editor': 'shift-cmd-D': 'find-and-replace:select-next'
感謝golang
- golang能有如此的開發體驗,以及在如此低的版本中表現的這麼好。實在是大牛賜予我們最好的禮物了。
- golang的有如此好的開發工具加上各種擴充性比較強的編輯器(vim,emacs,sublime,atom等)開發體驗的確是非常好的。