51
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPAdvent Calendar 2016

Day 8

便利なんだけどあまり知られてなさそうなPHPer向けvim pluginのご紹介

Posted at

PHP Advent Calendar 2016 の 8日目のエントリです。

いきなりで申し訳ないのですが、正直に申し上げるとPHPer全員に使っていただきたいエディタは、 PhpStorm + IdeaVIM だと考えています :bow:
しかしPhpStormは有料です。会社ではゴリゴリPHP書いてるけど家ではたまーーにしかPHPを触らない人にとってはちょっとお財布への負担が大きいです。

vimであれば、PhpStorm ほど優秀ではありませんが、最低限の補完はできるし無料です。goとPHPといった複数の言語を使っているようなプロダクトでも画面を縦に割って別々の言語を編集できたりします。1

vim はプラグインを入れたり設定を書く事で簡単に拡張できます。vimでPHPを書くために役に立つプラグインはたくさんありますが、今日はその中でも便利なんだけどネット上であまり使ってる話を見ないプラグインを紹介させていただきたいと思います。

1. vim-phpfmt

b.gif

go 言語を書く時に vim-go プラグインを入れてちょっとセットアップすると、保存したタイミングで自動的にコードフォーマットを修正してくれますよね。自動でフォーマットする事でtabはsoftがいいとかhardがいいとか括弧の位置が…とかいう不毛な争いをなくす事ができて良いです。

PHPで同じ事をするには vim-phpfmt というプラグインを使います。プラグインはパッケージ管理システムを利用すると簡単にインストールできます。

私は Vundle を使っているのですが、 Vundle だとこんな感じです。2

Bundle 'beanworks/vim-phpfmt'

vim-phpfmt はコードフォーマットのお膳立てをしてくれるだけで、実際の整形作業は PHP CodeSniffer が行います。 プラグインの third_party ディレクトリ下に phpcbf.phar が入っているのでそれを使ってもよいですが、composer を使うと簡単に自前でインストールできます。

composer global require "squizlabs/php_codesniffer=*"

$HOME/.config/composer/vendor/bin に実行ファイルが置かれるのでパスを通せばOKです。

以下のような設定を追加することで、保存時に自動的に PSR2 に変換して保存してくれるようになります。 また、 g:phpfmt_standard の値を変更する事で他のフォーマットにも対応できます。

""
" vim-phpfmt
"
" A standard type: PEAR, PHPCS, PSR1, PSR2, Squiz and Zend
let g:phpfmt_standard = 'PSR2'
let g:phpfmt_autosave = 1

開いているプロジェクトによってルールが違ったりする事もあると思うので、開いているパスを見るなどして動的に変更するのも良いでしょう。

インデントだけじゃなくて括弧省略したif文なんかも適切に置換してくれるので見てて面白いです。

2. php_localvarcheck

このプラグインはすごいです。ファイル内で未使用変数や未定義変数を動的に検出し、変数名の色を変えて警告してくれます。
言葉で説明するよりも以下の画像を見ていただいたほうが早いでしょう。

a.gif

ファイル全体のチェックというよりは、カーソルがメソッド内に入るとそのメソッド内での未使用、未定義変数をチェックしてくれるみたいです。

公式にあるものは、Vim7.3あたりで導入された新しい正規表現エンジンに対応できてなくて エラーがでてしまうので、flyinshadow/php_localvarcheck.vimを使うとよいです。
Vundleなら以下の設定を追加すればインストールできます。

Bundle 'flyinshadow/php_localvarcheck.vim'

私はグローバルのチェックは必要ないかなと思ったので以下の設定を追加しています。

let g:php_localvarcheck_enable = 1
let g:php_localvarcheck_global = 0

3. errormarker.vim + vimparse.php

c.gif

errormarker.vim を使うと、make実行時に発生したコンパイルエラーのメッセージを見て該当行の色付けができたりするのですが、
vimparse.php を使うことで、make時に自動的にlintを行い、エラーが発生したときに errormarker.vim を使ってエラー行を目立つように表示してくれます。

errormarker.vim は 公式サイト からもダウンロードできます。 Vundleなら以下で入ります。

Bundle 'errormarker.vim'

errormarker.vimのインストールができたら次はvimparse.phpです。 vimparse.php は composer 経由でインストールできます。

composer global require ha1t/php-vimparse

インストールができたら vimparse.php を呼べるように $HOME/.config/composer/vendor/bin にパスを通してください。

そしたら filetype が PHP の時に以下の設定が読まれるようにすればOKです。

if executable('vimparse.php')
  setlocal makeprg=vimparse.php\ %\ $*
  setlocal errorformat=%f:%l:%m
  setlocal shellpipe=2>&1\ >
  autocmd BufWritePost <buffer> silent make
endif

おわりに

「知らなかった使ってみよう」と思ったプラグインはありましたか? 他にも便利なんだけどあまり知られてなさそうなPHP向けのvim pluginがあったら教えてください :smiley:

  1. PhpStormでも内部にTerminalを出せるのでTerminalから別言語を編集なんてこともやろうと思えばできるわけですが… :sweat_drops:

  2. Vundleのセットアップには、VimのVundleによるプラグイン管理 - Qiita が参考になります。

51
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?