vim配置
Vim-go是当前使用最为广泛的用于搭建Golang开发环境的vim插件:
Bundle 'fatih/vim-go'
:BundleInstall
Tagbar配合gotags配置:
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\
],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\
},
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\
},
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
安装Binaries
还需要安装其他tools,vim-go安装说明中提到所有必要的binary需要先安装好,比如gocode、godef、goimports等。通过:
:GoInstallBinaries
查看文件.vim/bundle/vim-go/plugin/go.vim:
let s:packages = [
\ "github.com/nsf/gocode",
\ "golang.org/x/tools/cmd/goimports",
\ "github.com/rogpeppe/godef",
\ "golang.org/x/tools/cmd/oracle",
\ "golang.org/x/tools/cmd/gorename",
\ "github.com/golang/lint/golint",
\ "github.com/kisielk/errcheck",
\ "github.com/jstemmer/gotags",
\ ]
这些vim-go依赖的二进制工具将会自动被下载,并被安装到$GOBIN下,但是自动安装很可能部分tools安装不成功,此时需要手动安装:
go get -u github.com/nsf/gocode
//或者
git clone https://go.googlesource.com/tools $GOPATH/src/golang.org/x/tools
go build golang.org/x/tools/cmd/goimports
安装golint:
./3rdpkg/src/github.com/golang
git clone git@github.com:golang/lint.git
cd ../../../../go/bin
pwd
./go/bin
go build -x github.com/golang/lint/golint
cp $WORK/github.com/golang/lint/golint/_obj/exe/a.out golint
常用工具
安装完毕$GOBIN目录如下:
.
├── errcheck
├── go
├── gocode
├── godef
├── godoc
├── gofmt
├── goimports
├── gorename
├── gotags
└── oracle
- gotags 这个用来配合vim的tagbar,查看方便的生成和查看文件中的各种方法,并进行跳转
- goimport 根据你所使用的方法,自动调整import中引用的内容,比较方便。
可以随时用vim命令 :Fmt 来格式化你的代码,也可以每次保存代码的时候,让vim自动为你格式化代码 - godef 实现在代码中的跳转,从函数调用的地方,直接跳转到函数的定义。默认的命令是:gd
- gocode实现Golang的代码自动补全
用法
- 新起一行输入fmt.,然后ctrl+x, ctrl+o,Vim 会弹出补齐提示下拉框,不过并非实时跟随的那种补齐,这个补齐是由gocode提供的。
- 输入一行代码:time.Sleep(time.Second),执行:GoImports,Vim会自动导入time包。
- 将光标移到Sleep函数上,执行:GoDef或命令模式下敲入gd,Vim会打开$GOROOT/src/time/sleep.go中 的Sleep函数的定义。执行:b 1返回到hellogolang.go。
- 执行:GoLint,运行golint在当前Go源文件上。
- 执行:GoDoc,打开当前光标对应符号的Go文档。
- 执行:GoVet,在当前目录下运行go vet在当前Go源文件上。
- 执行:GoRun,编译运行当前main package。
- 执行:GoBuild,编译当前包,这取决于你的源文件,GoBuild不产生结果文件。
- 执行:GoInstall,安装当前包。
- 执行:GoTest,测试你当前路径下地_test.go文件。
- 执行:GoCoverage,创建一个测试覆盖结果文件,并打开浏览器展示当前包的情况。
- 执行:GoErrCheck,检查当前包种可能的未捕获的errors。
- 执行:GoFiles,显示当前包对应的源文件列表。
- 执行:GoDeps,显示当前包的依赖包列表。
- 执行:GoImplements,显示当前类型实现的interface列表。
- 执行:GoRename [to],将当前光标下的符号替换为[to]。