1. vim-go 安装

折腾过vimrc的人大都会有自己熟悉的vim配置,这里不再从头开始配置vim了,推荐一个github上的vimrc配置amix/vimrc. 这个配置文件包含了很多常用的vim插件,给用户充足的定制空间,最重要的是它本身就包含了vim-go

另外还可以使用pathogen自行安装: git clone https://github.com/fatih/vim-go.git ~/.vim/bundle/vim-go
确保vim-go下的autoload能被正确加载。

然后在vim的命令模式下执行 :GoInstallBinaries 这样就会安装vim-go的相关依赖。如果遇见有些package无法下载的话,基本上是因为golang.org被墙了。可以先创建 $GOPATH/src/golang.org/x/然后cd到该文件夹,clone对应的代码库,如:git clone https://github.com/golang/net 然后执行go install net来安装相关package

常用的package有:

  • net
  • tools (安装的时候是go install tools/cmd)
  • lint
  • sys

gocode godef gotags

gocode

gocode是一款go的自动补全工具,目前支持vim、neovim、emacs
前面的操作顺利的话按(按Ctrl x后按Ctrl o)会有自动补全提示

godef

godef可以用来查找函数的定义,将光标移动相关函数上,
在命令模式下输入:GoDef或则在普通模式下输入gd即可跳转到函数定义出。Ctrl+t返回原文件

gotags

类似于ctags,生成函数标签索引,用户查找函数的声明或者调用。

1
gotags -R .

执行以上命令会生成tags文件,可通过 Ctrl+]Ctrl+t实现函数跳转
另外结合tagbar查看文件函数结构

也可以设置nmap实现tagbar迅速切换

1
nmap <F8> :TagbarToggle<CR>


常用命令

Cmd Desc Note
GoRun 运行当前文件
GoBuild 编译当前文件 GoBuild 不会生成二进制文件
cnext(cprevious) 编译时出现问题时,通过这两个命令来查看错误位置
GoTest 运行测试代码 GoTest 10s还没执行完就会超时
GoTestFunc 运行光标处的测试函数
GoCoverage 高亮显示代码执行覆盖率 GoCoverageClear清除高亮 GoCoverageToggle Toggle高亮
GoFmt 格式化go代码
GoImport 引入指定的go package ex. :GoImport strings tab键可以自动补齐
GoImportAs 引入指定的go package 并设置别名 ex. :GoImportAs str strings tab键可以自动补齐
GoDrop 删除指定的go package ex. :GoDrop strings tab键可以自动补齐
if,af normal mode函数范围的操作 如dif(delete inner function)是删除函数体(不包含声明) vaf(visual all function)选中函数体(包含声明和注释)
GoDef 跳到光标处函数的声明位置 使用ctrl+]或者gd也可跳转,ctrl+t跳回来

参考链接

vim-go-tutorial
Go Development with Vim-go
vim安装go插件vim-go和gocode,支持代码高亮、代码提示和语法检查等功能
IDEs and Plugins for Go