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 )
> 然后就會顯示出來一個項目列表回車就可以打開項目。
- 配合tree view
-
總結: > 感覺這個插件的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 插件自動補全演示
-
插件 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 linecmd-w
關閉標簽cmd-r
文件內的標簽列表cmd-e
使用選中的內容做搜索的patternshift-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等)開發體驗的確是非常好的。