這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
在visual studio code 1.0發布之前我也曾多次嘗試使用visual studio code開發Go程式,但是都放棄了,一是Go的外掛程式還沒發布或者不完善,而是vscode還不是那麼方便,所以我一直使用atom + goplus + godebug編寫Go的代碼,而且用起來也非常的順手方便。 現在vscode 1.0發布了,而且支援10種本地化語言,我嘗試使用它編寫Go程式,功能和效能都不錯,所以目前atom和vscode都是我的菜。
本文簡單介紹一下使用vscode開發Go的一些配置,預覽vscode + Go 的功能。
調整本地語言
vscode安裝上後會根據你的作業系統的本地化設定來配置你的visual studio code採用的語言,所以很可能你安裝上之後顯示為簡體中文。目前vscode 1.0支援下面10種語言:
- English (US) en-US
- 簡體中文 zh-CN
- 繁體中文 zh-TW
- 法語 fr
- 德語 de
- 意大利語 it
- 日語 ja
- 韓語 ko
- 俄語 ru
- 西班牙語 es
我還是習慣於英語環境,所以調整本地化語言為英語。如果想調整語言,使用 "ctrl + shift + P"開啟命令選擇區,輸入 "Conf" 就會顯示出 “Configure Language”命令,點擊這個命令就會建立或者開啟locale.json檔案,在這個檔案中你就可以設定你的locale 語言了:
我把它改成英文顯示,重啟vscode就顯示英文了。
安裝Go外掛程式
要開發Go程式,你需要安裝Go的外掛程式。 "ctrl + shift + P"開啟命名面板,然後輸入 "ext install Go"就會安裝Go外掛程式了,安裝完後提示你重啟vscode,就可以編寫Go程式了。
它支援以下功能:
- 彩色高亮Colorization
- 自動完成列表 (using gocode)
- 方法和類的簽名協助資訊 (using godoc)
- 程式碼片段
- 快速資訊 (using godef)
- 尋找定義 (using godef)
- 尋找引用 (using guru)
- 檔案大綱 (using go-outline)
- 工作區符號搜尋 (using go-symbols)
- 重新命名 (using gorename)
- 儲存時編譯 (using go build and go test)
- 格式化 (using goreturns or goimports or gofmt)
- 增加匯入 (using gopkgs)
- 調試 [部分實現] (using delve)
它的調試功能值得稱讚,Go總算也有一個方便的調試功能呢,加上斷點後可以斷點所在的堆棧資訊,變數以及監控自訂的運算式。(atom + godebug也可以實現這個功能,它也通過delve進行調試)
在vscode左邊工具列的第四個表徵圖就可以開啟調試視窗,點擊某行可以方便的在代碼中增加斷點。
當然,在第一次編寫Go代碼的時候,可能需要安裝所需的工具,如guru、go-symbols、goreturns等。如果設定好GOPATH環境變數,啟動vscode,開啟一個go代碼檔案,在右下角你會看到 "Analysis Tools Missing"的提示,點擊它就會自動安裝這些所需的工具。你也可以手工安裝它們:
123456789 |
go get -u -v github.com/nsf/gocodego get -u -v github.com/rogpeppe/godefgo get -u -v github.com/golang/lint/golintgo get -u -v github.com/lukehoban/go-outlinego get -u -v sourcegraph.com/sqs/goreturnsgo get -u -v golang.org/x/tools/cmd/gorenamego get -u -v github.com/tpng/gopkgsgo get -u -v github.com/newhook/go-symbolsgo get -u -v golang.org/x/tools/cmd/guru |
Go外掛程式設定
vscode的Go外掛程式有一些可以定製化的配置,你可以開啟user preferences 或者 workspace settings來配置。如果想對所有的Go項目有效,就修改user preferences。
點擊菜單 "File -> Preferences -> User Settting"開啟視窗,左邊的視窗是 vscode預設配置,右邊的視窗可以添加我們自己的設定。對於Go外掛程式,可以添加如下的設定:
1234567891011121314 |
{ "go.buildOnSave": true, "go.lintOnSave": true, "go.vetOnSave": true, "go.buildFlags": [], "go.lintFlags": [], "go.vetFlags": [], "go.coverOnSave": false, "go.useCodeSnippetsOnFunctionSuggest": false, "go.formatOnSave": true, "go.formatTool": "goreturns", "go.goroot": "C:/Go", "go.gopath": "C:/gopath"} |
它定製了Go外掛程式的一些行為和變數。比如你可以改格式化工具為"gofmt",如 "go.formatTool": "gofmt"。
在寫Go代碼的時候,很多工具只有在編寫的檔案儲存的時候才會執行,比如格式化,vet,lint、cover、test等,所以定時的儲存檔案可以觸發這些動作,因此你可以在這個設定檔中加上下面的配置:
1 |
"files.autoSave": "afterDelay" |
它可以定時的儲存檔案。
快速鍵
你可以通過菜單 "File -> Preferences -> Keyboard Shortcuts"查看和定義快速鍵。左邊的視窗顯示預設的快速鍵設定,但是不是很直觀,建議看這個連結,它分門別類的介紹了每個快速鍵的功能。
一般涉及到快速鍵,我都會對其中的一個快速鍵特別的關注,就是 "ctrl + space",這個鍵一般用來設定觸發提示的功能,但是和IME切換的快速鍵衝突,所以我會重新定義它。在剛才開啟的右邊視窗中增加定義:
12345 |
{ "key": "ctrl+j", "command": "editor.action.triggerSuggest", "when": "editorTextFocus"} |
同時我還增加了一個自己習慣的快速鍵,就是格式化代碼的快捷點,預設設定為 "shift+alt+f",我新增加了一個快速鍵:
12345 |
{ "key": "ctrl+alt+f", "command": "editor.action.format", "when": "editorTextFocus" } |
以及執行測試的快速鍵
123456789101112 |
{ "key": "ctrl+alt+t", "command": "go.test.cursor", "when": "editorTextFocus"},{ "key": "ctrl+alt+p", "command": "go.test.package", "when": "editorTextFocus"} |
右邊視窗的的右下角有對話方塊可以協助你增加快速鍵,當然你也可以想我這樣一樣手工添加。
其它功能
Go外掛程式和vscode工具配合的很好,比如調用格式化代碼的快速鍵就可以進行格式化,不必在儲存的時候就可以執行。你也可以在命令選擇區中輸入 "!"查看警告和錯誤資訊。
類似Sublime text,命令選擇區非常的有用, "ctrl + p"開啟它後輸入 "?"可以查看它的不同的功能。
vscode的狀態列也非常的有用,外掛程式資訊、git資訊,文檔資訊都會在這裡顯示。
你可以改變代碼高亮的風格。"ctrl + shift + P"開啟命令選擇區,輸入 "theme"會顯示 "Preferences:Color Theme",點擊它會顯示可用的theme。 你還可以在visual studio marketplace上你可以找到更多的theme,比如我使用的[Seti Modified],和atom的保持一致。
相比atom,當然vscode還有不足的地方,比如開啟多個檔案,它們不會以tab的顯示多視窗,你還需要"ctrl + tab"再選擇其它的檔案。沒有安裝Python但是還總提示Python外掛程式需要升級等。但是也有比atom功能強大的地方,比如 "ctrl" +滑鼠點擊就可以查看方法的定義,效能可能比atom要好,儘管在我的機器上還沒看出太大的效能區別。
本文只是粗略的展示了vscode和Go外掛程式的功能,相信更強大的功能還有待在實踐中發掘和學習。
另外,建議閱讀github上的這篇文章VS Code Tips and Tricks