2013年6月23日日曜日

Go言語 Go開発環境にVimを使う

こんにちは。scarvizです。

今までGoでの開発環境はgeditを使っていたんですが、syntax機能や括弧対応表示などはあるものの、もっと便利に使えるものが欲しいなと思いだしていました。
そんなところに、下記記事が掲載されていたので、試しにVimで開発環境を整えてみました。
http://mattn.kaoriya.net/software/vim/20130531000559.htm

基本的にはリンク先の通りなんですが、僕はviはたまに使ってたんですが、Vimは初めてだったので、今回はVim初めての人が困りそうなところ踏まえて紹介していこうと思います。

環境はいつものようにUbuntu12.04(x86)です。




■Vimをインストールする
vimコマンドを実行して、エディタが起動するなら必要ないですが、入っていない場合はインストールするところから始めます。

sudo apt-get install vim


■Vimの操作
Vimが初めての人は、最初にvimtutorを利用すると良いです。
vimtutorはVimの操作方法を順番に学習できるようになっています。
だいたい30分~1時間くらいで出来ると思います。
以下を実行することでvimtutorを開始することが出来ます。

vimtutor


■.vimrcの作成
vimtutorでも作成しますが、Vimの設定ファイルとして、$HOME以下に.vimrcファイルを作成します。
このファイルにGoのVim用プラグインを設定するんですが、以下のように記述する必要があるようです。

filetype off
filetype plugin off
set runtimepath+=$GOROOT/misc/vim
filetype plugin on

一度ファイルタイプ用のプラグイン自動読み込みをoffにしておきます。
こうしておかないと、Goのプラグインを見てくれないようです。
「filetype off」と「filetype plugin off」は.vimrcの始めに、
「filetype plugin on」は.vimrcの最後に書いておくと良いようです。

Goのプラグインでは、syntax機能、括弧対応の表示が自動的に設定されます。
また、タブはVimの初期設定でスペース8つ分になっているようです。
好みで設定を付け足せばよいと思いますが、僕が設定している内容を以下に記します。

set number "行番号を表示
set tabstop=4 "タブスペース4つ分に設定
set smartindent "改行時のオートインデント
set completeopt=menuone "コード補完時のプレビューを無効にする

set ignorecase "大文字/小文字の区別なく検索する
set incsearch "検索フレーズに部分マッチしている部分を表示する
set hlsearch "マッチするすべを強調表示する
set smartcase "検索文字列に大文字が含まれている場合は区別して検索する

コード補完時のプレビューはデフォルトで有効になっていました。
上部に表示されるのですが、邪魔だったので僕は無効にしています。


■コード補完機能
コード補完機能を使うにはgocodeを取得する必要があります。
GOPATHは予め設定しておいてください。
GOPATHの設定については下記を参考にしてください。
QtでGo言語をするための環境構築
Go言語で独自パッケージを作成する

以下でgocodeを取得します。
取得したら、PATHに$GOPATH/binを通しておいてください。

go get github.com/nsf/gocode

.vimrcに以下を追記してください。

exe "set runtimepath+=".globpath($GOPATH, "src/github.com/nsf/gocode/vim")

ここで気をつけないといけないのは、GOPATHに設定しているパスが複数ある場合、gocodeが有効になってくれないということです。
独自パッケージを利用する(作成する)場合は、コンパイル時に以下の実行が必要になります。
実行用のシェルスクリプトを用意しておけば良いですね。

export GOPATH=$GOPATH:(独自パッケージの親ディレクトリパス)

開発環境構築としてはこれで終わりです。
次に開発中に便利なコマンドで、vimtutorには出てこないものをいくつか紹介します。


■開発中に便利なコマンド
Vimでドキュメントを見るには「:Godoc (パッケージ名)」で出来ますが、そのまま実行すると、コードと入れ替わりで表示されてしまいます。
どうせなら並べて表示したいですよね。
Vimのコマンドで、画面分割をして、そこに表示させることが出来ます。

画面分割には「:vsp」または「:sp」コマンドを実行します。
「:vsp」は横に画面が並ぶように分割されます。
「:sp」は縦に画面が並ぶように分割されます。

各画面を行き来するには「C-w」(Ctrl + w)を実行し、移動したい画面の方向キー(h,j,k,lまたは上下左右キー)を押下します。
カーソルが移動したら、「:Godoc (パッケージ名)」コマンドでその画面でドキュメントを表示することが出来ます。

他のファイルを開いて並べて表示したい場合にも使えます。
他のファイルを開くには「:e (ファイルパス)」を実行します。
「:e (ディレクトリパス)」を実行すると、そのディレクトリ以下のファイル名一覧が表示されます。

また、画面は閉じられるまで、以前表示していたものを覚えています。
「:bp」で一つ前、「:bn」で一つ後の内容を表示させることができます。

「:bp」と「:bn」は連続して使ったりするので、.vimrcでマッピングしておくと便利です。

nmap <C-p> :bp<CR>
nmap <C-n> :bn<CR>

<C-p>で「Ctrl + p」に割り当てるようにしています。
<CR>は改行を意味しています。
なので、「Ctlr + p」押下時に「:bp(改行)」と同じ動作をするようになります。


僕も使い始めたばかりなので、不慣れな点は多いですが、「Vim使ってます!」っていうと何かPG的にカッコいいですよね!
余談ですが、Vimに慣れないって方は、$GOROOT/miscの中にはIntelliJもあるので、IntelliJを使うのもありだと思います。他にも公開されているIntelliJ用のプラグインがあるみたいですよ。

2 件のコメント:

  1. Go言語をVimで開発できるとは、
    だんだんGoがやりたくなってきました :D

    返信削除