安装Go
虽然像是废话,但为了配置过程的完整性,还是记下来吧。
官网install链接: https://golang.org/doc/install
装好后记得配置 $GOPATH
。为了能在任何地方使用Go编译出来的命令,还可以把 $GOPATH/bin
附到环境变量$PATH。
我在Mac上使用iTerm2+oh-my-zsh,所以把它们写到 .zshrc
:
# go path
export GOPATH=~/go
# add go commands to system path
export PATH=$GOPATH/bin:$PATH
让go get命令绕过Great Wall的束缚
有了Go的开发环境,我们就可以用它编译、安装一些十分有用的小命令了。但在此之前,还有一些客观存在的技术障碍需要扫除。
一般 go get
命令会自动帮我们下载源码、编译、安装命令,如果托管源码的网站被block了(如gopkg.in),整个过程就会卡住,卡到人抓狂(记得在内心f**k
GFW哦~)。
这时,如果电脑上刚好运行着shadowsocks,事情就变得简单了。go get 支持http_proxy和https_proxy,我们需要动一点手脚,把sock5协议转换成http协议。
(以下步骤的前提是电脑上运行着shadowsocks。)
安装 polipo
brew install polipo
配置 polipo 在家目录下新建
.polipo
文件,内容如下:#必填 socksParentProxy = "localhost:1080" socksProxyType = socks5
运行 polipo
polipo &
默认会监听8123端口的http请求。
在go get命令前加上http_proxy参数
以不幸被墙的cobra命令为例,它的代码网址是https协议,用:
https_proxy=127.0.0.1:8123 go get -v github.com/spf13/cobra/cobra
如果是http_proxy, 用:
http_proxy=127.0.0.1:8123 go get -v github.com/blah/blah
安装goimports,gocode等有用工具
goimports
goimports命令能自动格式化代码,自动添加、移除imports,而且与Emacs集成良好。可以替代官方gofmt命令。
安装命令:
go get -u golang.org/x/tools/cmd/goimports
gocode
gocode命令能为代码自动补全提供后台支持,是Emacs下Go代码补全必不可少的backend。
安装命令:
go get -u github.com/nsf/gocode
godef
godef命令能在Go源码变量、函数定义间跳转,是查看变量、函数、文件定义的好助手。
安装命令:
go get github.com/rogpeppe/godef
安装Emacs
呃。。。这一步就略过吧
Emacs配置Go mode
安装go-mode
添加自动格式化的hook(需要安装goimports命令)
;; Call Gofmt before saving (setq gofmt-command "goimports") (add-hook 'before-save-hook 'gofmt-before-save)
配置自动补齐(需要安装gocode命令)
;;autocomplete (set (make-local-variable 'company-backends) '(company-go)) (company-mode)
配置自动跳转按键(需要安装godef命令)
;; Godef jump key binding (local-set-key (kbd "M-,") 'godef-jump) (local-set-key (kbd "M-.") 'pop-tag-mark)