それにしてもvimはプラグインの数が半端ないすな。
世界中の作者さんには足を向けて寝れないのですが、そうすると俺は立ちながら寝るOR逆立ちしながら寝る
という事になってしまうので非常に失礼ながらベットで寝てます。恐縮です!
さて今回はバンドルの管理を行ってくれる「neobundle」と
入力途中で補完してくれる「neocomplcache」を使ってPHPの入力補完したいと思います。
IDEあまり使ってなかった自分としては入力途中で補完対象が表示されるのがちょっとなれなかったので
いままでは使ってなかったのですが、食わず嫌いはこの業界やっていけません。
ってことでなにはともあれ導入!導入!
1.とりあえずneobundle.vim入れる
1-1.とりあえずgitからひっぱてくる
$ mkdir -p ~/.vim/bundle $ cd ~/.vim/bundle $ git clone git://github.com/Shougo/neobundle.vim.git neobundle.vim
作ったディレクトリの下にneobundle.vimフォルダがクローンされていればおk
え?gitってなに食べれるの?って人はとりあえずgitインストールしましょう
CentOS5.5+Git1.7.2インストール
1-2.そんじゃ.vimrcを編集
"------------------------------------------------- " バンドル管理 "------------------------------------------------- "Vi互換OFF set nocompatible filetype off if has('vim_starting') set runtimepath+=~/.vim/bundle/neobundle.vim/ call neobundle#begin(expand('~/.vim/bundle/')) endif "必要なもの NeoBundle 'Shougo/neobundle.vim' NeoBundle 'Shougo/vimproc' NeooBundle 'Shougo/neocomplcache' call neobundle#end() "ファイル形式別プラグインのロードを有効化 filetype plugin on filetype indent on
1-3.一旦保存して読み込んでからもう一回開く
$ vi ~/vimrc
1-4.vimコマンドモードで以下を入力
:NeoBundleInstall!
※NeoBundleInstall!
最後に!がついていますが、!を付けるとアップデートも一緒にしてくれるようです。
もしもインストールだけであれば!はつけなくても大丈夫らしい
※2 NeoBundleClean
もしもいらないバンドルを消す場合はvimrcから削除してから
このコマンド打てばおkとのこと。
これではいりました。そんじゃ次、補完します
2.neocomplcacheでPHP補完
2-1.PHP辞書ファイル作成
$ mkdir -p ~/.vim/dictionary $ cd ~/.vim/dictionary $ php -r '$f=get_defined_functions();echo join("\n",$f["internal"]);'|sort > php.dict
辞書ファイルができました
2-2.vim_rcに設定書く
"------------------------------------------------- " neocomplcache設定 "------------------------------------------------- "辞書ファイル autocmd BufRead *.php\|*.ctp\|*.tpl :set dictionary=~/.vim/dictionary/php.dict filetype=php let g:neocomplcache_enable_at_startup = 1 let g:neocomplcache_enable_camel_case_completion = 1 let g:neocomplcache_enable_underbar_completion = 1 let g:neocomplcache_smart_case = 1 let g:neocomplcache_min_syntax_length = 3 let g:neocomplcache_manual_completion_start_length = 0 let g:neocomplcache_caching_percent_in_statusline = 1 let g:neocomplcache_enable_skip_completion = 1 let g:neocomplcache_skip_input_time = '0.5'
これで補完できました。