Thursday, June 23, 2011

Gocode——用于Go语言的自动补全工具

原文发表于「桃源」: http://linux.cuit.edu.cn/?p=1362

一直以来, 我不太习惯于使用自动补全, 一是没有发现合适的 (这方面VS和Xcode这些IDE明显做得更好), 二来也觉得自己敲还来得快一点 (=_,=). 前几天发现 Gocode, 试用下来感觉还不错, 配置也不算繁琐, 推荐给使用Go语言的同学.

Gocode

Gocode现在支持的编辑器有Vim和Emacs, 分别利用Vim的omni completion和Emacs的 Auto Complete Mode. 想看实际演示效果的同学可以点 这里. 这里主要讲一下安装和Emacs的配置, Vim的配置由于比较简单, 可以参考 官方文档.

很多同学在安装Gocode的时候都会出现编译错误, 这主要是因为Go语言发展比较迅速, 这个星期的版本和上个星期的版本之间都可能存在不兼容, 默认 clone 下来的Gocode代码都是兼容最新版Go语言的 (这作者真勤劳), 因此如果你的Go编译器版本太陈旧的话就可能编译失败. 比如我电脑上的Go版本是 r57.1 (weekly.2011-05-03), 是一个release版, 而最新的Gocode是针对weekly.2011-06-16的, 这是一个开发者版. 理所当然的, 我在编译的时候遇到了编译错误, 这时我有两种选择, 要么升级Go, 要么降级Gocode. 升级Go对于我来说不太方便, 因为我的Go版本都是随着软件仓库一起更新的, 因此我选择了降级Gocode. 还好Gocode的作者给那些存在兼容问题的版本都打上了tag, 我们只需找到兼容自己电脑上当前Go版本的tag, 再回滚就行了.

$ git log --decorate
$ git checkout compatible-with-go-weekly.2011-04-27

接下来是编译和安装.

$ gomake
$ sudo gomake install

编译完成之后会生成 gocode 命令, 默认情况下 gomake install 会将 gocode 放到 GOBIN 环境变量指定的目录, 如果你没有设置 GOBIN, 那就会放到 ${GOROOT}/bin 里. 必须确保 gocode 命令可以在 PATH 环境变量中找到.

最后是配置Emacs. 首先你需要安装 Auto Complete Mode 扩展, 安装步骤可以参考 这里. 然后将Gocode提供的Emacs Lisp文件放到Emacs的 load-path 里即可. 注意这里使用到的el文件需要是最新版的 (非回滚版), 否则补全将失败.

现在用Emacs打开一个Go源文件试试看吧~

No comments:

Post a Comment