Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

VimでGoの開発環境を設定する方法のまとめ

$
0
0

今記事ではVimでのGo開発環境の構築方法をまとめる

この記事でできること

  • *.goをGo言語と判別してくれるようにする
  • シンタックスハイライト
  • オムニ補完
  • 保存時の自動整形(go fmt)
  • 保存時の自動ビルドとquickfix
  • シンタックスチェック(重いので使ってないけど一応できる)

GOPATHの設定

*shrc
export GOPATH=${HOME}/go

現在はGOROOTは指定する必要はないようです
今回はホームディレクトリにgoというディレクトリを作成してそこをGOPATHに指定しました

fish-shellを使用している方は後述する vim-go の READMEに補足が書いてあるのでそちらを参照して下さい

vimrcの設定

Go言語用のオールインワンプラグインを作っている方がいるので、使わせて頂きます

fatih/vim-go

プラグインの導入方法詳細は割愛して、例えばNeoBundleだと以下のように設定します

vim-goの導入
NeoBundle 'fatih/vim-go'

少なくとも自分の今の環境だと*.goを自動でGo言語だと判別してくれないようです(最新にパッチが当たっているかは未調査)
vim-goは拡張子の判別も含んでいるため、とりあえず上記のように設定すればよいと思います
*.goの拡張子の判別設定を自分でやっているのなら、以下のようにLazy化してもいいかもしれないです(動作未確認)

lazy化
NeoBundleLazy 'fatih/vim-go', {
            \ 'autoload' : { 'filetypes' : 'go'  }
            \ }

必要パッケージのインストール

vim-goが依存しているパッケージをインストールします
vimを起動後以下のコマンドを実行してください

vim-go依存パッケージのインストール
:GoInstallBinaries

GitMercurialに依存してるらしいので、入っていない場合は先にパッケージを入れておくのをおすすめします

ubuntuでの例
sudo apt-get install git mercurial

あとはお好みで vim-go の設定を追記して下さい
自分は今のところ以下の設定のみ足しています

vim-goの設定例
letg:go_highlight_functions =1letg:go_highlight_methods =1letg:go_highlight_structs =1

他の設定に関してはvim-goやその他の依存プラグインの READMEを参照して下さい

シンタックスハイライト

上記の設定ができていれば、シンタックスハイライトが有効になっているはずです

追加で err のハイライトも足しておくとより捗るらしいです
"err"という文字列をHighlightしておくとGolangのコードリーディングが捗る

オムニ補完

上記の設定ができていれば、C-x C-oでオムニ補完ができるはずです

neocompleteで自動補完する場合は以下のように設定しました

letg:neocomplete#sources#omni#input_patterns.go='\h\w\.\w*'

※githubのパッケージの補完が効かない場合の件について、記事末尾の補足に追記しました

コード整形

上記の設定ができていれば、保存時に go fmtが自動で実行されるはずです

ビルドとquickfixの利用

以下のコマンドを利用して下さい

:GoBuild

シンタックスチェック有効化

syntasticを使えば特に設定することなくシンタックスチェックを有効化できます
ただ、大きいパッケージを入れるととたんに重くなるので、vim-watchdogsとかの導入も検討して下さい(設定方法未調査)

シンタックスチェックプラグイン
NeoBundle 'scrooloose/syntastic'

補足

Githubからgo getしてきたパッケージの補完が効かない

以下を試してみてください

cd${GOPATH}/src/github.com
go build -v ./... && go install ./...

正確なところは未調査ですが、どうやら補完のためには ${GOPATH}/pkg以下にバイナリがインストールされてる必要があるようです

Vim 内でのGOPATHの設定?

設定方法を調べている際、ブログ等で以下のように設定している方が多いようでしたが、
vim-goのReadmeにも見られなかったし、設定しなくても実際の動作は影響しませんでした

必要?
exe "set rtp+=".globpath($GOPATH,"src/github.com/nsf/gocode/vim")

以前は必要だったのか、bashrc等に書いていれば必要ないのかは未調査


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>