Go更好的开发环境Visual Studio Code

Go更好的开发环境Visual Studio Code

一直以来Go的IDE并没有合适的选择.曾经试过liteide,但是不合口味,一直以来就用Sublime+Gosublime+Godef来作为环境,但是因为Sublime对显示的支持等因素.用起来不算很舒服.
最近看到Visual Studio Code对Go的支持,简直耳目一新.而且因为Visual Studio Code对跨平台的支持,感觉 简直 完美.
当然这些功能通过Sublime加插件的方式也能基本实现,但是两者带来的体验嘛,不可同日而语.

Visual Studio Code

Visual Studio Code:下载地址

Go for Visual Studio Code支持特性

  • 代码高亮

  • 自动完成列表(使用gocode)

  • 代码片段

  • 快速提示函数定义(使用godef)

  • 跳转定义(使用godef)

  • 查找引用(使用go-find-references)

  • 代码大纲(使用go-outline)

  • 重命名(使用gorename)

  • 保存时编译

  • 代码格式化

  • Imports管理

  • 调试(使用delve )

功能展示

IDE特性

IDE

调试

IDE

安装方法

Golang

Golang:下载地址
下载需要平台的安装包安装即可,这里不多介绍.我使用的是Mac,下载了pkg文件安装了就好,后面也不具体介绍其他平台的,但是大致都相同.安装完成后记得设置环境变量.

Visual Studio Code

安装Visual Studio Code 0.10 或以上版本,在 Visual Studio Code中 按下c md-shift-p,在命令框输入install,选择Install Extension
然后输入Go,查找并选中Rich Go language support for Visual Studio Code,有两个,别选错了.

安装完成后会提示重启软件.

安装插件

需要在命令行下依次安装以下插件,这些都是go语言编写的.
 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-find-references
 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

配置

按下cmd+,或者通过菜单打开配置文件.

1       { 2            "go.buildOnSave": true, 3            "go.lintOnSave": true, 4            "go.vetOnSave": true, 5            "go.buildFlags": [], 6            "go.lintFlags": [], 7            "go.vetFlags": [], 8            "go.formatOnSave": true, 9            "go.formatTool": "goreturns", 10            "go.goroot": "/usr/local/go", 11            "go.gopath": "/Users/damir/devTool/golib:/Users/damir/Code/go" 12        }

其中
go.formatTool可以修改为goreturns,goimports,gofmt.

go.formatOnSave设置为true才可以保存时格式化.
相关的路径必须设置正确.

如果需要给不同的项目做不同的配置,那么将配置文件放入.vscode/settings.json即可

使用方法

自动保存

虽然插件作者强烈建议开启自动保存,但是我这里不推荐,开启了自动保存会出现代码编写一半发生跳动等问题.但是要使跳转定义等
功能正确工作,需要保存文件并确保无错.

代码高亮

打开Go项目所在文件夹,即可打开该项目,左侧点击相应的*.go文件,可见代码高亮了.

自动完成列表

输入相应的代码会自动提示

从图片上可以看出,同时也显示了函数的定义,显示方式也很不错.

代码片段

直接输入即触发.

快速提示函数定义

在实际编码过程中,经常会需要查看函数的参数信息,变量的类型,现在只需要将鼠标指上去即可查看.

跳转定义

跳转到函数定义只需要⌘+鼠标左键,或者直接按下F12即可.如果只需要大致查看⌘+鼠标左键指向就能显示(可惜不能显示当前函数Doc).
返回到之前的按键是ctrl+-ctrl+shift+-,这样就能快速导航了.

查找引用

可以通过命令呼叫或者用快捷键shift+F12.查找项目下相关的引用.

代码大纲

按下⌘+P,然后输入@即可.

重命名

选中需要重命名的方法名称或者变量名,按下F2即可修改.

特别注意,这里不能双击选中方法名称或者变量名,否则会出错.你可以鼠标单击该位置,或者拖动选择.
 我下面先演示错误操作提示的错误信息.
 另外,重构操作较慢,需要等待

保存时编译

保存时会自动编译,并列出错误信息,也可以在错误行查看具体的错误信息.

Imports管理

可以通过⌘+Shift+P来呼出Command窗口,输入Go Import来导入,另外可以设置快捷键.当然从上面的保存时编译中
的动态图可以看出,输入一个包名并直接使用,保存的时候会自动导入,当然如果文件未用到该包,保存时会自动去除.

{"key":"cmd+k i","command": "go.import.add"}我用了 ⌘+K I来作为快捷键.

调试

调试还需要安装一些东西
要使用这个功能首先要保证go的版本为1.5或者以上.

这里介绍Mac OS的,如果其他操作系统可以参考[文档] ( https://github.com/derekparker/delve/wiki/Building) ,不过暂时不支持Windows

创建证书

  • 打开应用程序–>其他–>钥匙串访问

  • 打开菜单 钥匙串访问–>证书助理–>创建证书

  • 输入名字dlv-cert,身份类型选择自签名根证书,证书类型选择代码签名,选中让我覆盖这些默认值选项框.点击继续.将有效天数修改到3650

  • 填写相应的信息直到选择指定用于该证书的位置选择系统,然后完成.

  • 在主菜单中–>钥匙串–>系统–>dlv-cert–>右键–>显示简介–>信任–>使用此证书时始终信任.

  • 重启系统

获取代码与安装

注意:安装前如果你的GoPath包含:分割的多个路径,请先改为单路径.

git clone https://github.com/derekparker/delve.git
然后进入到这个目录下面执行
GO15VENDOREXPERIMENT=1 CERT=dlv-cert make install
完成后即可安装成功
执行dlv可见输出表示正确安装.

使用方法

按照如下步骤自动会生成配置文件

dlv项目现在bug不少,beego的项目现在也不能被调试,不过作者在持续改进.

在 Visual Studio Code中调试

Visual Studio Code快捷键

快捷键可以去快捷键的设置里面查看完整列表,这里列出一些常用的快捷键.

  • CMD+D         #类似于sublime的该功能,能够自动选中其他相同的

  • ALT+鼠标点击   #选中不同的位置

  • CMD+UP        #文件结尾

  • CMD+DOWN     #文件开头

  • CMD+Right     #行开头

  • CMD+Left      #行结尾

  • CMD+P         #调出导航,连按直接导航到相应的文件  CMD+E同样效果

  • CMD+O         #打开文件

  • CMD+W         #关闭激活窗口

  • CMD+K P       #复制激活窗口的路径

  • CMD+B         #折叠左侧窗口

  • CMD+SHIFT+P   #显示命令窗口,等同于按F1

  • CMD+SHIFT+O   #列出文件大纲

  • CTRL+G        #跳转到行

  • CMD+F         #查找,等同于CMD+G

  • ALT+CMD+F     #替换

  • ALT+UP    ALT+DOWN  #移动行

  • CMD+.         #快速Fix

  • CMD+ENTER     #插入新行

  • CMD+SHIFT+K   #删除当前行

以上快捷键是我自己常用的

写在最后

这个插件在某些功能上执行缓慢,不过插件还在持续演进,另外Visual Studio Code确实值得称赞,可以称得上良心,具体的还需要上手去体验.
相关的功能还很多,后面我会继续介绍一些.准备写一些Visual Studio Code搭建一个Web项目的全部,还有Visual Studio Code写C#项目的一些东西.

参考资料

Visual Studio Code 开源免费跨平台代码编辑器  
Go for Visual Studio Code
delve

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Go更好的开发环境Visual Studio Code - HelloWorld