ども。6月入社のjhoshinaです。
まだ入社したてのつもりだったのに、ラボブログ執筆がまわってきてあたふたしています。
何を書こうか迷ったのですが、環境も新しくなったことですし、設定しなおしたVimの設定・プラグインなどをちょこっと見ていこうかと思います。phpとsymfony関係を中心に見ていきます。
雑多な設定
特に変わったところもないのですが一応。
~/.vimrc
set nocompatible set showmatch showmode showcmd set laststatus=2 set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P syntax on filetype on filetype indent on filetype plugin on
~/.vim/ftplugin/php.vim
setlocal shiftwidth=4 tabstop=4 expandtab nowrap let php_sql_query = 1 let php_baselib = 1 let php_htmlInStrings = 1 let php_noShortTags = 1 let php_parent_error_close = 1 let php_parent_error_open = 1 "let php_folding = 1 "let php_sync_method = x " for QuickFix setlocal makeprg=php\ -l\ % setlocal errorformat=%m\ in\ %f\ on\ line\ %l
自分の場合、見通しのよさと影響を重視して、ファイルタイプ別の設定は極力~/.vim/ftplugin/*.vimにsetlocalで書くようにしています。
設定読み込みの順番はruntimepathが示すように、 ~/.vim -> (Vim標準ディレクトリ) -> ~/.vim/after となっているので、各種プラグインなどが読み込まれた後に設定が必要であれば ~/.vim/after 以下に設定してます。
matchit.vim
PHPと直接関係ないのですが、対応する括弧に移動するコマンド「%」を拡張するマクロです。
HTMLの対応タグにジャンプできるのはもちろんのことで、例えば、
<?php if ($foo): ?> Hello World! <?php else: ?> Oh.. <?php endif ?>
というコードがあった場合、ifの上で%を押すことによって、else、endifの場所に移動してくれます。
matchit.vimはVimの標準配布物に含まれているため、
source $VIMRUNTIME/macros/matchit.vim
と、~/.vimrcに記述するだけで有効になります。もちろん、~/.vim/pluginにコピーしても動きます。
symfony.vim
Symfonyでファイル間の移動などを行うプラグインです。
Symfonyで開発をしていると、Controller-View-Model間の移動が頻繁に行われますが、このプラグインを使うと移動が楽になります。
例えば、ControllerのexecuteIndex()内にカーソルがある状態で「:Sview」と打つと対応するindexSuccess.phpを、逆にindexSuccess.php上で「:Saction」と打つとアクション内の対応メソッドへとジャンプしてくれます。もちろんモデル名の上で「:Smodel」と打てば対応するモデルへと移動してくれます。
また、symfonyコマンドを発行することも可能で、
:Symfony generate:module frontend dashboard :Symfony cc
などと、シェルに降りるまでもなく作業が続けられます。
snipMate
TextMate
同種のプラグインにsnippetsEmuがありますが、snippetの書きやすさからsnipMateを使っています。
ife<TAB>と入力すると
if (/* condition */) { // code... } else { // code... }
と展開されます。「/* condition */」の部分が選択された状態になっており、入力が終わったらTabを押すことによって、「// code...」の部分に移動できます。
前述のsymfony.vimをいれてあると、以下の設定でバッファにSymfonyのファイルタイプを仕込むことができるので、symfonyのファイルを開いた場合だけに適用するsnippetを定義することもできます。
autocmd User SymfonyBufInit setlocal filetype+=.symfony
soh335's vim-symfony-snipmate at master - GitHubにあるものを自分向けにいじって使っています。これで「requ<TAB>」と打つと「$this->getRequestParameter("");」なんて展開が可能になります。「Symfonyってメソッド名長いよね」と常々思っているので手放せません。
その他
他に最近ではctagsからcscopeに移行したり、project.vimをやめてNERDTreeにしたりしたのですが、まだ十分に使いこなせていない感じもあるので、このあたりはまた次の機会にでも。
では!