這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
AUTH:PHILO VERSION:1.2
開發環境的必要特徵
- 專案管理
- 快速檔案跳轉
- 自動語法檢查
- 自動補全
- 尋找定義
- 啟動速度快
- 如果自己有需求的話外掛程式可以隨便寫
- 靈活的回合組態
(project,lint,hint,autocomplete)
要實現上面幾點我們來一步一步的配置。
我的大環境
- OSX
- GO 1.4
- HomeBrew
go 環境安裝
這一部分是最重要的,如果沒有它,每次build的時候出現 too many errors 心裡真的是非常難過的。
環境配置:(golint,gooracle,mercurial)
1. 安裝mercurial: brew install mercurial> 這個東西是用來做版本管理的,也是下載代碼的工具類似git,貌似google的項目用的挺多的。
2. 安裝golint:
$ go get github.com/golang/lint $ go install github.com/golang/lint
安裝gooracle
go get code.google.com/p/go.tools/cmd/oracle
安裝goimport
go get golang.org/x/tools/cmd/goimports
安裝gocode
go get -u github.com/nsf/gocode
安裝 godef
go get -v code.google.com/p/rog-go/exp/cmd/godefgo install -v code.google.com/p/rog-go/exp/cmd/godef
- 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/coverVet Tool: /usr/local/go/pkg/tool/darwin_amd64/vetFormat Tool: /Users/Li-jianying/git/bin/goimportsLint Tool: /usr/local/go/bin/golintGocode Tool: /Users/Li-jianying/git/bin/gocodeGocode Status: EnabledOracle Tool: /Users/Li-jianying/git/bin/oracleGit: /usr/bin/gitMercurial: /usr/local/Cellar/mercurial/3.2.1/bin/hgPATH: /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下自己手動綁定配置如下:
'.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)
>
'.platform-darwin atom-text-editor': 'shift-cmd-D': 'find-and-replace:select-next'
感謝golang
- golang能有如此的開發體驗,以及在如此低的版本中表現的這麼好。實在是大牛賜予我們最好的禮物了。
- golang的有如此好的開發工具加上各種擴充性比較強的編輯器(vim,emacs,sublime,atom等)開發體驗的確是非常好的。
轉自 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/