Go作为一门新兴语言,发展的如火如荼啊。不过,目前还没有一个成熟的IDE。本文介绍基于vim搭建Go的开发环境,保证在具有vim的快感的同时,又支持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
如果有输出就说明安装成功。
在$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文件,就会看到语法高亮。
这个插件列出go文件中得变量、类型、函数等,并支持跳转。
需要安装tagbar插件,本身这个插件依赖于Exuberant ctags,但是它不支持go,需要通过gotags。
1) 安装gotags
gotags是go编写的,安装很简单,直接运行:
go get -u github.com/jstemmer/gotags
就会将gotags安装到$GOPATH/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返回。效果如下:
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
最后是大杀器。vim写代码被人诟病的就是不想IDE一样,可以基于语义的代码提示。通过gocode即可实现这个功能。gocode同样是go写的,安装方便:
go get -u github.com/nsf/gocode
然后cd到gocode/vim下,执行./update.sh,实际就是把vim插件拷贝到~/.vim/下。然后编辑go文件,就会有代码提示,效果图:
这样,Go的开发环境就配置成功了,敬请享用吧^-^