macOS下golang环境配置

双十一京东mac air 11寸(redis作者也是用的这个)促销,只要3999,于是买了一台试试水。

本意是通过上一篇博客的内网穿透,直连公司虚拟机用的。但是没想到双休日虚拟机居然连不上了,p2p和代理方式甚至teamview都不行,为了防止这种情况再发生,还是进行一下配置吧。

记录一下防止以后还要装0.0

通用配置

最基础的应该是homebrew安装了,毕竟没有这个连wget之类的都没有

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后是终端配置,看了下mac下的secretcrt,有点贵。。然后用了下zoc7,发现对中文的支持不好(输入法一次只能输入一个中文字符)

最后看了iterm2,这个东西支持一些最基本的功能,profile记录命令,通过ssh命令进行连接

也会空闲自动发送空内容来保持和ssh的长连接。也没有一些中文的兼容性问题,那么就是他了。

然后就要解决mac下终端命令行过长的问题

1
2
#默认是这么长,主机名太长对不大屏幕的air来说就是灾难
chengyuedeMacBook-Air:tedcy chengyue

这里需要修改环境变量PS1

1
2
3
4
5
6
命令列表的参数:

\u 显示当前用户的用户名(user name)
\h 显示主机名(host name)
\W 显示当前工作目录的名字(work directory)
\$ 显示$符作为提示符,如果用户是root的话,则显示#号
1
2
#在~/.bash_profile中输入
export PS1='\W\$ '

然后就清爽啦

密码管理

至于密码管理,用sshpass即可。公司的几十台虚拟机用sshpass,自己的云服务器用ssh秘钥登陆。

也会空闲自动发送空内容来保持和ssh的长连接。也没有一些中文的兼容性问题,那么就是他了。

1
2
3
sshpass因为安全性问题,无法用brew安装,得用源码编译

wget http://downloads.sourceforge.net/project/sshpass/sshpass/1.05/sshpass-1.05.tar.gz && tar xvf sshpass-1.05.tar.gz && cd sshpass-1.05 && ./configure && make && make install

rz,sz配置

1
2
3
4
5
6
brew install lrzsz

cd /usr/local/bin
sudo wget https://raw.github.com/mmastrac/iterm2-zmodem/master/iterm2-send-zmodem.sh
sudo wget https://raw.github.com/mmastrac/iterm2-zmodem/master/iterm2-recv-zmodem.sh
sudo chmod 777 /usr/local/bin/iterm2-*

打开Item2,点击preferences → profiles,选择某个profile,如Default,之后继续选择advanced → triggers,添加编辑添加如下triggers:

1
2
3
4
5
6
7
8
9
Regular expression: rz waiting to receive.\*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh
Instant: checked

Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh
Instant: checked

shell下文件,文件夹颜色区分配置

1
2
3
4
5
6
7
8
9
1 brew install coreutils

2 gdircolors --print-database > ~/.dir_colors

3 创建~/.bash_profile,将下列内容追加进去

PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
alias ls='ls -F --show-control-chars --color=auto'
eval `gdircolors -b $HOME/.dir_colors`

第三步是由网上的配置精简而来,网上配置会扫描变量,速度较慢

1
2
3
4
5
6
#查看是否存在coreutils
if brew list | grep coreutils > /dev/null ; then
PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
alias ls='ls -F --show-control-chars --color=auto'
eval `gdircolors -b $HOME/.dir_colors`
fi

golang相关配置

get配置

golang本身安装是很简单的,去下个二进制安装包解压即可

然后配置一下环境变量

1
2
3
4
#在 ~/.bash_profile中粘贴
export GOROOT=$HOME/go
export GOPATH=$HOME/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

然后go get自己的项目,疯狂报错。hmmm全部被墙了,下面就需要装一个http代理了。

我本身是用ss翻墙的,所以要做的就是安装http转socks5代理。

ss官方推荐是他自己的cow,然而这个东西安装需要用curl翻墙,或者用go get安装源码。

所以选择用brew来安装privoxy,因为brew本身支持sock5代理

1
2
3
4
5
6
7
8
9
10
11
#在 ~/.bash_profile中粘贴
export ALL_PROXY=socks5://127.0.0.1:1080

brew install privoxy

#安装完毕后在/usr/local/etc/privoxy/config中输入sock5代理地址
forward-socks5 / 127.0.0.1:1080 .

#启动privoxy服务

brew services start privoxy

此时privoxy就以后台方式运行了并且默认以8118进行http代理

可以用lsof看一下

1
2
3
4
5
6
7
8
9
chengyuedeMacBook-Air:cal_node chengyue$ lsof -nP -iTCP -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Shadowsoc 308 chengyue 5u IPv4 0xf543bfe4c193c77b 0t0 TCP *:8090 (LISTEN)
Shadowsoc 308 chengyue 6u IPv4 0xf543bfe4c193ecbb 0t0 TCP 127.0.0.1:1080 (LISTEN)
QQ 611 chengyue 40u IPv4 0xf543bfe4c5aeeb8b 0t0 TCP 127.0.0.1:4300 (LISTEN)
QQ 611 chengyue 41u IPv4 0xf543bfe4bf9b136b 0t0 TCP 127.0.0.1:4301 (LISTEN)
QQ 1448 chengyue 38u IPv4 0xf543bfe4bfcb823b 0t0 TCP 127.0.0.1:4302 (LISTEN)
QQ 1448 chengyue 40u IPv4 0xf543bfe4bf9b00cb 0t0 TCP 127.0.0.1:4303 (LISTEN)
privoxy 7904 chengyue 3u IPv4 0xf543bfe4be2e5a1b 0t0 TCP 127.0.0.1:8118 (LISTEN)
1
2
3
#在~/.bash_profile中输入
export http_proxy=http://127.0.0.1:8118
export https_proxy=https://127.0.0.1:8118

好啦!可以愉快的go get了!

vim配置

不管是go还是cpp,主力ide还是vim,顺便记录下vim的配置过程

安装vundle

首先是安装vim的包管理vundle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#首先下载文件
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

#然后打开~/.vimrc输入
set nocompatible
filetype off

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

Plugin 'gmarik/Vundle.vim'

call vundle#end()
filetype plugin indent on

保存推出后打开vim,输入:PluginInstall

vundle安装完毕

安装vim-go

1
2
#在~/.vimrc的call vundle#begin() 和 call vundle#end() 之间加上
Plugin 'fatih/vim-go'

保存推出后打开vim,输入:PluginInstall

vim-go安装完毕

然后输入:GoInstallBinaries

将会安装一些vim-go的依赖组件

安装YouCompleteMe

这是自动补全的插件,需要先安装cmake

1
brew install cmake
1
2
#在~/.vimrc的call vundle#begin() 和 call vundle#end() 之间加上
Bundle 'Valloric/YouCompleteMe'

保存推出后打开vim,输入:PluginInstall

然后会等待很久,差不多十几分钟才能装完

装完后

1
2
cd ~/.vim/bundle/YouCompleteMe
python install.py --gocode-completer

大功告成

唯一的问题是没有高亮

1
2
3
4
#~/.vimrc中输入
syntax on
au BufRead,BufNewFile *.go set filetype=go
colorscheme torte

其中colorscheme看自己喜好了