VS Code 搭建 Go 开发IDE

本文主要介绍的是如何使用VS Code 搭建一个进行Go开发的IDE。

Note: 本文的所有操作都是在 OS X系统上进行的。

VS Code 介绍

VS Code 是微软开源的一个编辑器软件。刚面世的时候侧重于 C# 和前端开发,随着版本迭代和新功能出现,特别是支持安装第三方插件,VS Code 也支持其它语言的开发。

​VS Code 原生支持智能提示、方法补全的语言有:JavaScript, JSON, HTML, CSS, LESS, SASS。如果装上下文提到的 Go 插件,也是能够支持 Go 语言的智能提示和方法补全。

VS Code 最牛逼的地方是 它和 Atom 都是基于 Electron 构建的应用,但是相比于 Atom 常被诟病的卡卡卡,VS Code 打开超大文件几乎秒开。

不足的地方是 VS Code 的第三方插件的丰富度不及 Atom,但是假以时日,随着更多人关注它,VS Code 的第三方插件肯定会越来越丰富。

下载安装

官网地址

常用快捷键

  • ⌘+⇧+P / F1 万能键
  • F12 跳转到声明的地方
  • ⌘+⇧+F全文搜索
  • ⌘+P快速切换文件
  • ⌘+点击指定文件,将此文件在分屏栏打开
  • ⌘+D多选
  • ⌘+E 打开命令行,其他指令其实都是基于命令行的,可直接在输入框输入?来查询指令
  • ⌃+G跳转到指定行
  • ⌃+tab快速切换到上一个文件,多次按(⇧)tab可以来回选择,也可以直接点击文件顶部名称来显示历史文件列表进行切换
  • ⌥+点击多处可以多光标操作

    安装 Go 插件

    vscode-go 是 VS Code 编辑器上非常好用的一个 golang 插件,它包括以下特性:
  • Colorization 代码着彩色
  • Completion Lists 代码自动完成(使用gocode)
  • Snippets 代码片段
  • Quick Info 快速提示信息(使用godef)
  • Goto Definition 跳转到定义(使用godef)
  • Find References 搜索参考引用(使用go-find-references)
  • File outline 文件大纲(使用go-outline)
  • Workspace symbol search 工作区符号搜索(使用 go-symbols)
  • Rename 重命名(使用gorename)
  • Build-on-save 保存构建(使用go build和go test)
  • Format 代码格式化(使用goreturns或goimports或gofmt)
  • Add Imports 添加引用(使用 gopkgs)
  • Debugging 调试代码(使用delve)
  • 这里默认你已经安装了golang环境。

IDE 截图 IDE

使用快捷方式(⌘+P)打开命令面板,输入以下命令,然后点击回车键,VS Code就开始安装Go插件。

1
ext install Go

安装完成后,按照以下说明配置一些 Go 设置。

打开 Preferences -> User Settings,主界面右边面板的 settings.json 输入以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"go.buildOnSave": true,
"go.lintOnSave": true,
"go.vetOnSave": true,
"go.buildFlags": [],
"go.lintFlags": [],
"go.vetFlags": [],
"go.useCodeSnippetsOnFunctionSuggest": false,
"go.formatOnSave": true,
"go.formatTool": "goreturns",
"go.goroot": "/usr/local/go",
"go.gopath": "/opt/gowork",
"files.autoSave": "onFocusChange"
}

注意上面的 go.gorootgo.gopath的值,以本季系统的 GOROOTGOPATH 为准。

vscode-go 依赖下面列出的工具,如果缺失某些工具的话,安装完 vscode-go 之后打开一个go文件,在编辑器的右下角会出现 Analysis Tools Missing 的警告,点击它就会自动安装缺失的工具。

  • gocode: go get -u -v github.com/nsf/gocode
  • godef: go get -u -v github.com/rogpeppe/godef
  • golint: go get -u -v github.com/golang/lint/golint
  • go-outline: go get -u -v github.com/lukehoban/go-outline
  • goreturns: go get -u -v sourcegraph.com/sqs/goreturns
  • gorename: go get -u -v golang.org/x/tools/cmd/gorename
  • gopkgs: go get -u -v github.com/tpng/gopkgs
  • go-symbols: go get -u -v github.com/newhook/go-symbols
  • guru: go get -u -v golang.org/x/tools/cmd/guru

当然也可以直接在命令行中输入以下命令安装:

1
2
3
4
5
6
7
8
9
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

安装 delve

delve 只支持 Go 1.5以上版本,并且 Go 1.5版本的安装步骤和 Go 1.6是不一样的,相对来说 Go 1.6版本安装比较简单。

Go 1.6

如果系统安装了 HomeBrew, 直接执行以下命令即可:

1
$ brew install go-delve/delve/delve

NOTE: 按照此步骤安装delve,如果在稍后运行Go程序的时候出现 runtime/internal/sys 找不到 的错误,这是因为上一步的操作另外安装了Go环境,然后覆盖了之前的。可以执行以下命令卸载 brew 安装的 Go 环境:

1
$ brew uninstall Go

Go 1.5

创建一个自签名的证书

创建自签名的步骤如下

  • 打开应用 Keychain Access (/Applications/Utilities/Keychain Access.app)
  • 打开菜单 /Keychain Access/Certificate Assistant/Create a Certificate...
  • 选择一个名称 (比如 dlv-cert ), 设置选项 Identity TypeSelf Signed Root, 设置选项 Certificate TypeCode Signing 然后勾选 Let me override defaults。 点击 Continue。 你可以把 Validity Period 从 365天扩展到3650天。
  • 连续点击多次 Continue 按钮知道到达 Specify a Location For The Certificate 面板, 然后将选项 Keychain 设置为 System
  • 如果你无法将证书以 System keychain 的形式存储,你可以将它创建为 login keychain,然后导出。接着再以 System keychain 的形式导入。
  • 创讲完后,在左边的 keychains 列表选择 System 选项,你能看到你刚刚创建的证书。鼠标右键证书,然后选择 Get Info, 打开 Trust 项, 将 Code Signing 设置为 Always Trust
  • Yosemite 系统需要额外的操作: keychains 列表,选择 category Keys -> dlv-cert -> right click -> GetInfo -> Access Control -> 选择 Allow all applications to access this item -> 保存变更。
  • 你必须将 Keychain Access 应用退出,这样子才能使用到证书并且重启当前正在运行的 taskgated 进程。你可以选择重启你的电脑。

安装

  • 创建目录 mkdir $GOPATH/src/github.com/derekparker && cd $GOPATH/src/github.com/derekparker
  • 克隆项目并且打开 git clone https://github.com/derekparker/delve.git && cd delve
  • Go 1.5 需要执行的命令。 export GO15VENDOREXPERIMENT=1
  • 开始安装 CERT=dlv-cert make install

如何断点调试

调试模式 调试模式

第一次进入断点调试的时候,需要配置一些调试信息,步骤如下:

  1. 在 VS Code 中,切换到debug面板,快捷键是 ⌘+⇧+D
  2. 点击左上角的齿轮图标(Open launch.json)。
  3. 选择 Go 环境。

如何配置调试信息

launch.json 配置信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"version": "0.2.0",
"configurations": [
{
"name": "Phantom",
"type": "go",
"request": "launch",
"mode": "debug",
"remotePath": "",
"port": 1234,
"host": "127.0.0.1",
"program": "${workspaceRoot}",
"env": {
"QUICKPAY_ENV": "testing"
},
"args": []
}
]
}

在需要调试的代码附近打个断点后,按 F5 即可开始断点调试了。

参考

  1. http://www.cnblogs.com/zsy/p/5224524.html
  2. https://marketplace.visualstudio.com/items?itemName=lukehoban.Go
  3. https://github.com/derekparker/delve/blob/master/Documentation/installation/osx/install.md