vim-goをインストールしてみた（所要時間：15分）

# 概要
golangの開発環境は数多く存在すれど、B2Bの現場では例えばintellijの導入を許可されておらず、ソフトウェアのインストールにハードルがあって、使いたいIDEを導入できない場合がある。その中でも比較的導入しやすいvimに、golangの開発環境を設定し、必要最小限でgolangの開発環境を整えてみた。
vim-goは[公式](https://github.com/fatih/vim-go)からインストールすることにします。


本記事では、仮想環境上にvim-goを導入する手順を示す。
# 前提
- 仮想環境上にgolangがインストールされている。[こちら](http://qiita.com/luckyriver0/items/24eca38005038f187c1a)で環境を構築する

# 手順
1.　前提にあるように、[こちら](http://qiita.com/luckyriver0/items/24eca38005038f187c1a)の手順で環境を構築する。

２.　terminalからvagrantへsshする

```
$ cd /path/to/vagrant/golang/vagrant
$ vagrant ssh
```

３.　NeoBundleをインストールする

```
[vagrant@develop ~]$ curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh > install.sh
[vagrant@develop ~]$ sh ./install.sh
[vagrant@develop ~]$ rm -rf install.sh
```

４.　ホームディレクトリに、.vimrcを作成する。

```
[vagrant@develop ~]$ vi ~/.vimrc
```

```lang:.vimrc
set encoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
set fileformats=unix,dos,mac

" Note: Skip initialization for vim-tiny or vim-small.
if 0 | endif

if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath^=~/.vim/bundle/neobundle.vim/

" Required:
call neobundle#begin(expand('~/.vim/bundle/'))

" Let NeoBundle manage NeoBundle
" Required:
NeoBundleFetch 'Shougo/neobundle.vim'

" My Bundles here:
" Refer to |:NeoBundle-examples|.
" Note: You don't set neobundle setting in .gvimrc!

call neobundle#end()

" Required:
filetype plugin indent on

" If there are uninstalled bundles found on startup,
" this will conveniently prompt you to install them.
NeoBundleCheck
```

５.　vimを起動する。

```
[vagrant@develop ~]$ vim
```

６.　インストールが始まるので、yをタイプする。

```
Not installed bundles:  ['vim-go']
Install bundles now?
(y)es, [N]o:
```

７.　完了後、 :qでvimを終了する。

８.　.vimrcの「" Note: You don't set neobundle setting in .gvimrc!」の下に以下の行を追加し保存する。

```
NeoBundle 'fatih/vim-go'
```

９.　再度vimを起動すると、vim-goのインストールを聞かれるので「y」を入力し、インストールを開始する。

```
Not installed bundles:  ['vim-go']
Install bundles now?
(y)es, [N]o:
```

１０.　完了後、:qでvimを終了し、再度vimを起動する。

１１.　vim内で「:GoInstallBinaries」を入力し、goパッケージのインストールを開始する。以下のようにインストールが開始される。

```
vim-go: gocode not found. Installing github.com/nsf/gocode to folder /home/vagrant/go/bin/

vim-go: gometalinter not found. Installing github.com/alecthomas/gometalinter to folder /h
ome/vagrant/go/bin/
vim-go: goimports not found. Installing golang.org/x/tools/cmd/goimports to folder /home/v
agrant/go/bin/
vim-go: godef not found. Installing github.com/rogpeppe/godef to folder /home/vagrant/go/b
in/
vim-go: oracle not found. Installing golang.org/x/tools/cmd/oracle to folder /home/vagrant
/go/bin/
vim-go: gorename not found. Installing golang.org/x/tools/cmd/gorename to folder /home/vag
rant/go/bin/
vim-go: golint not found. Installing github.com/golang/lint/golint to folder /home/vagrant
/go/bin/
vim-go: errcheck not found. Installing github.com/kisielk/errcheck to folder /home/vagrant
/go/bin/
vim-go: gotags not found. Installing github.com/jstemmer/gotags to folder /home/vagrant/go
/bin/
vim-go: asmfmt not found. Installing github.com/klauspost/asmfmt/cmd/asmfmt to folder /hom
e/vagrant/go/bin/
Press ENTER or type command to continue
```

完了です。

# 動作確認
1.　以下のコマンドでgoファイルを新規作成する。

```
vim main.go
```

2.　以下のフォーマットめちゃくちゃなコード内容を記述する

```lang:main.go
package        main

import              "fmt"

func   main() {
  
}
```

3.　以下のコマンドを実行すると

```
:GoFmt
```

フォーマットがかかります。

```lang:main.go
package main

import "fmt"

func main() {
}
```

4.　main関数内で「fmt.」と入力し、そのままcontrolキーを押しながら、x, oと入力すると、以下のように入力補完が起動します。

![スクリーンショット 2016-03-09 00.15.50.png](https://qiita-image-store.s3.amazonaws.com/0/107402/b7efb245-d694-52b1-f74c-c50cb65285fb.png)


5.　以下のコマンドを実行すると

```
:GoRun
```

実行できます

```
vim main.go

Hello vim-go!

Press ENTER or type command to continue
```

おつかれさまでした！

# 参考
- [vim-go公式ページ](https://github.com/fatih/vim-go)