Go作为一门新兴语言,发展的如火如荼啊。不过,目前还没有一个成熟的IDE。本文介绍基于vim搭建Go的开发环境,保证在具有vim的快感的同时,又支持Go的特性。
1. Go环境
首先,是安装Go。下载安装包,解压,然后设置环境变量
GOROOT:指向解压后的go路径。
GOPATH:指向用于开发的workspace。Go按照固定的文件结构组织该文件夹,可以很方便的发布代码,或者从其他仓库下载代码。需要在该目录下创建src/,pkg/,bin/三个文件夹
PATH:Go生成的所有的可执行程序都存放在$GOPATH/bin下,需要将它加入到PATH中。同时,需要把go tool加到PATH中,即$GOROOT/bin。
完成后,可以在src下简单写一个go程序,测试是否安装成功。该文件路径:$GOPATH/src/chosen0ne.com/hello.go
package main import "fmt" func main() { fmt.Printf("Hello, world.\n") }
运行下列命令执行该程序:
go run chosen0ne.com/hello.go
如果有输出就说明安装成功。
2. Vim的Go插件
在$GOROOT/misc/vim下,对应的是支持go相关特性的vim插件,包括:语法高亮,缩进,Godoc支持等。按照方式在readme.txt中有说明。主要是在.vimrc加入以下代码:
" Some Linux distributions set filetype in /etc/vimrc. " Clear filetype flags before changing runtimepath to force Vim to reload them. if exists("g:did_load_filetypes") filetype off filetype plugin indent off endif set runtimepath+=$GOROOT/misc/vim " replace $GOROOT with the output of: go env GOROOT filetype plugin indent on syntax on
然后:source ~/.vimrc,打开一个go文件,就会看到语法高亮。
3. Vim Tag list for Go
这个插件列出go文件中得变量、类型、函数等,并支持跳转。
需要安装tagbar插件,本身这个插件依赖于Exuberant ctags,但是它不支持go,需要通过gotags。
1) 安装gotags
gotags是go编写的,安装很简单,直接运行:
go get -u github.com/jstemmer/gotags
就会将gotags安装到$GOROOT/bin下。
2) 安装配置tagbar
tagbar插件就和普通vim插件安装一样,可以通过pathtogen或者vundle。安装完之后,需要对Go进行配置,在.vimrc中加入以下代码:
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‘ \ }
输入:Tagbar就可以打开tagbar,右侧的窗口会显示一系列符号。可以通过Ctrl + ]跳至符号定义处,Ctrl + t返回。效果如下:
4. 语法检测
vim插件syntastic支持对各种语言进行语法检查,会标记处出错位置以及错误原因,效果图:
输入:Errors会打开quickfix窗口列出所有的错误列表,通过:bp,:bn在多个错误之间切换。:SyntasitcInfo会显示当前文件对应的语法checker信息。这个插件可以简单配置一下,具体可以查看帮助文档。
" location list always updated let g:syntastic_always_populate_loc_list = 1 " collect errors when use multple checkers let g:syntastic_aggregate_errors = 1
5. 代码提示
最后是大杀器。vim写代码被人诟病的就是不想IDE一样,可以基于语义的代码提示。通过gocode即可实现这个功能。gocode同样是go写的,安装方便:
go get -u github.com/nsf/gocode
然后cd到gocode/vim下,执行./update.sh,实际就是把vim插件拷贝到~/.vim/下。然后编辑go文件,就会有代码提示,效果图:
这样,Go的开发环境就配置成功了,敬请享用吧^-^