使用visual studio code開發Go程序

lkekeme 8年前發布 | 67K 次閱讀 Google Go/Golang開發 Go Visual Studio Code

在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 語言了:

{
  "locale":"en-US"
}

 

我把它改成英文顯示,重啟vscode就顯示英文了。

 

安裝Go插件

要開發Go程序,你需要安裝Go的插件。 "ctrl + shift + P"打開命名面板,然后輸入 "ext install Go"就會安裝Go插件了,安裝完后提示你重啟vscode,就可以編寫Go程序了。
使用visual studio code開發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左邊工具欄的第四個圖標就可以打開調試窗口,點擊某行可以方便的在代碼中增加斷點。
使用visual studio code開發Go程序

當然,在第一次編寫Go代碼的時候,可能需要安裝所需的工具,如guru、go-symbols、goreturns等。如果設置好GOPATH環境變量,啟動vscode,打開一個go代碼文件,在右下角你會看到 "Analysis Tools Missing"的提示,點擊它就會自動安裝這些所需的工具。你也可以手工安裝它們:

go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-outline
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols
go 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插件,可以添加如下的設置:

{

"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等,所以定時的保存文件可以觸發這些動作,因此你可以在這個配置文件中加上下面的配置:

"files.autoSave": "afterDelay"


它可以定時的保存文件。

快捷鍵

你可以通過菜單 "File -> Preferences -> Keyboard Shortcuts"查看和定義快捷鍵。左邊的窗口顯示缺省的快捷鍵設置,但是不是很直觀,建議看這個鏈接,它分門別類的介紹了每個快捷鍵的功能。

一般涉及到快捷鍵,我都會對其中的一個快捷鍵特別的關注,就是 "ctrl + space",這個鍵一般用來設置觸發提示的功能,但是和輸入法切換的快捷鍵沖突,所以我會重新定義它。在剛才打開的右邊窗口中增加定義:

{

"key": "ctrl+j",

"command": "editor.action.triggerSuggest",

"when": "editorTextFocus"

}

同時我還增加了一個自己習慣的快捷鍵,就是格式化代碼的快捷點,默認設置為 "shift+alt+f",我新增加了一個快捷鍵:

{

"key": "ctrl+alt+f",

"command": "editor.action.format",

"when": "editorTextFocus"

}

以及執行測試的快捷鍵

{

"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"打開它后輸入 "?"可以查看它的不同的功能。
使用visual studio code開發Go程序

vscode的狀態欄也非常的有用,插件信息、git信息,文檔信息都會在這里顯示。
使用visual studio code開發Go程序

你可以改變代碼高亮的風格。"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插件的功能,相信更強大的功能還有待在實踐中發掘和學習。

 

來源:鳥窩

 本文由用戶 lkekeme 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!