とあるプログラマの備忘録

都内某所に住むプログラマが自分用に備忘録を残すという趣旨のブログです。はてなダイアリーから移動しました!

【vim】neobundle導入&neocomplcacheでPHP補完

それにしても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.neocomplcachePHP補完

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'

これで補完できました。