「vimのGo開発環境」の版間の差分
提供: neovim/vim入門
(ページの作成:「vimをGo言語の統合開発環境にする方法を紹介します。 '''読み方''' ;Go言語:ごー げんご __TOC__ == 概要 == * 補完 * タグリスト *...」) |
|||
行176: | 行176: | ||
== 実行 == | == 実行 == | ||
=== quickrun === | === quickrun === | ||
+ | [[vimproc]]を併用することで、QuickRunを非同期で実行できます。 | ||
<syntaxhighlight lang="vim"> | <syntaxhighlight lang="vim"> | ||
NeoBundle 'Shougo/vimproc', { | NeoBundle 'Shougo/vimproc', { |
2014年12月31日 (水) 14:53時点における最新版
vimをGo言語の統合開発環境にする方法を紹介します。
読み方
- Go言語
- ごー げんご
概要
- 補完
- タグリスト
- シンタックスチェック
- 実行
Go環境構築
FreeBSD
$ sudo pkg install go
Ubuntu
$ sudo apt-get install golang
CentOS
$ sudo yum install \ http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm $ sudo yum install golang
補完
neocomplete
neocompleteは、キーワード補完システムを提供します。
- ファイル名の補完
- パス
- インクルードファイル
- オムニ補完
NeoBundle 'Shougo/neocomplete.vim' "Note: This option must set it in .vimrc(_vimrc). NOT IN .gvimrc(_gvimrc)! " Disable AutoComplPop. let g:acp_enableAtStartup = 0 " Use neocomplete. let g:neocomplete#enable_at_startup = 1 " Use smartcase. let g:neocomplete#enable_smart_case = 1 " Set minimum syntax keyword length. let g:neocomplete#sources#syntax#min_keyword_length = 3 let g:neocomplete#lock_buffer_name_pattern = '\*ku\*' " Define dictionary. let g:neocomplete#sources#dictionary#dictionaries = { \ 'default' : '', \ 'vimshell' : $HOME.'/.vimshell_hist', \ 'scheme' : $HOME.'/.gosh_completions' \ } " Define keyword. if !exists('g:neocomplete#keyword_patterns') let g:neocomplete#keyword_patterns = {} endif let g:neocomplete#keyword_patterns['default'] = '\h\w*' " Plugin key-mappings. inoremap <expr><C-g> neocomplete#undo_completion() inoremap <expr><C-l> neocomplete#complete_common_string() " Recommended key-mappings. " <CR>: close popup and save indent. inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR> function! s:my_cr_function() return neocomplete#close_popup() . "\<CR>" " For no inserting <CR> key. "return pumvisible() ? neocomplete#close_popup() : "\<CR>" endfunction " <TAB>: completion. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" " <C-h>, <BS>: close popup and delete backword char. inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>" inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>" inoremap <expr><C-y> neocomplete#close_popup() inoremap <expr><C-e> neocomplete#cancel_popup() " Close popup by <Space>. "inoremap <expr><Space> pumvisible() ? neocomplete#close_popup() : "\<Space>" " For cursor moving in insert mode(Not recommended) "inoremap <expr><Left> neocomplete#close_popup() . "\<Left>" "inoremap <expr><Right> neocomplete#close_popup() . "\<Right>" "inoremap <expr><Up> neocomplete#close_popup() . "\<Up>" "inoremap <expr><Down> neocomplete#close_popup() . "\<Down>" " Or set this. "let g:neocomplete#enable_cursor_hold_i = 1 " Or set this. "let g:neocomplete#enable_insert_char_pre = 1 " AutoComplPop like behavior. "let g:neocomplete#enable_auto_select = 1 " Shell like behavior(not recommended). "set completeopt+=longest "let g:neocomplete#enable_auto_select = 1 "let g:neocomplete#disable_auto_complete = 1 "inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<C-x>\<C-u>" " Enable omni completion. autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS autocmd FileType python setlocal omnifunc=pythoncomplete#Complete autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::'
neosnippet
NeoBundle 'Shougo/neosnippet' NeoBundle 'Shougo/neosnippet-snippets' imap <C-k> <Plug>(neosnippet_expand_or_jump) smap <C-k> <Plug>(neosnippet_expand_or_jump)
自動補完 vim-go
vim-goは、自動補完、スニペットのサポート、シンタックスハイライトの改善、 go toolchain コマンドなどの機能を持っています。
runtime.Gosched()
と書いて保存すると自動的にimport文が追記されます。
事前準備
環境変数の設定
.zshrcなどに環境変数GOPATHを追加します。このパスは、適当に変えてください。
export GOPATH=$HOME/tmp/go
mercurialをインストール
vim-goは、hgコマンド(mercurial)が必要です。
FreeBSDの場合
$ sudo pkg install mercurial
Ubuntuの場合
$ sudo apt-get install mercurial
CentOSの場合
$ sudo yum install mercurial
.vimrc の設定
NeoBundle 'fatih/vim-go'
タグリスト
tagbar + phpctags
NeoBundle 'vim-scripts/tagbar'
Unite outline
Vim unite-outlineでソースコード探索がラクチン
NeoBundle 'Shougo/unite.vim' NeoBundle 'Shougo/unite-outline' "NeoBundle 'h1mesuke/unite-outline'
シンタックスチェック
syntastic
NeoBundle 'scrooloose/syntastic' let g:syntastic_enable_signs=1 let g:syntastic_auto_loc_list=2
実行
quickrun
vimprocを併用することで、QuickRunを非同期で実行できます。
NeoBundle 'Shougo/vimproc', { \ 'build' : { \ 'windows' : 'make -f make_mingw32.mak', \ 'cygwin' : 'make -f make_cygwin.mak', \ 'mac' : 'make -f make_mac.mak', \ 'unix' : 'make -f make_unix.mak', \ }, \ } NeoBundle 'thinca/vim-quickrun' let g:quickrun_config={'*': {'split': ''}} let g:quickrun_config._={ 'runner':'vimproc', \ "runner/vimproc/updatetime" : 10, \ "outputter/buffer/close_on_empty" : 1, \ }
以下の動画は、quickrunのPHPやPythonでの例ですが、Goでもquickrunの動作は変わりません。
関連項目
- vimのPHP開発環境
- vimのGo開発環境
- vimのRuby開発環境