Help us understand the problem. What is going on with this article?

VimでPHPの開発環境をサクッと整える

More than 1 year has passed since last update.

この記事は Relux AdventCalendar 15日目の記事です。

普段、複数の環境(例えば、PHPとRuby、PHPとgolangなど)で開発を行う場合、
IDEだとPHPStormや、RubyMineなど、各開発環境に応じてエディタを切り替えて利用することになり、
手間に感じることが多々あります。

ただし、Vimを使っていればこういったスイッチングコストはゼロでコーディングを行うことが可能です。

そこで、VimでPHPの開発を行う際に、プラグインを使わなくても、ちょっとだけ楽ができる設定をいくつかご紹介したいと思います。

インデントの設定をする

プロジェクトや言語によってコーディングルールのインデント幅が違ってきたりします。
毎度、設定するのは面倒なので、ファイルの拡張子によって自動で切り替えられるようにしておきます。

augroup vimrc-filetype
  autocmd!
  " PHPだったらインデント幅が4で
  autocmd BufNewFile,BufRead *.php set filetype=php
  autocmd FileType php setlocal expandtab tabstop=4 softtabstop=4 shiftwidth=4

  " Rubyだったらインデント幅は2にしたい
  autocmd BufNewFile,BufRead *.rb set filetype=ruby
  autocmd BufNewFile,BufRead *.ruby set filetype=ruby
  autocmd FileType ruby setlocal expandtab tabstop=2 softtabstop=2 shiftwidth=2
augroup END

PHP lintを使う

PHPのlintもphp7ccphanなど色々ありますが、ここではPHP標準の機能を使ってみます。
PHPでコマンドラインからシンタックスチェックを行うには下記のコマンドです。

$ php -l <filename>

ただし、これをコマンドラインから毎度叩くのは手間なので、下記のような設定をしておきます。

function! s:PHPLint()
  let s:result = system('php -l ' . bufname(""))
  let s:count = split(s:result, "\n")
  echo s:result
endfunction

augroup php-lint
  autocmd!
  autocmd BufWritePost *.php call <SID>PHPLint()
augroup END

こうすることで、カレントバッファを保存するタイミングでシンタックスチェックを行なってくれます。

universal-ctagsを使う

プロジェクトのサイズがそれなりになったり、フレームワークの仕様を確認したい場合など、
コードリーディングを行う場面は頻繁に訪れます。
universal-ctags 1 を使ってtagsファイルを作成しておけば、
クラス名や、メソッド名等でジャンプでき、コードリーディングが捗ります。
tagsファイルを生成するには下記のコマンドです。

$ ctags -R

ただし、これをコマンドラインから毎度叩くのは手間なので、下記のような設定をしておきます。

function! s:generateCtags()
  let s:options = readfile('/path/to/.ctags') "ctagsの設定ファイルへのパス
  let s:command = [
    \'ctags',
    \'-f',
    \'/path/to/tags', "tagsファイルへのパス
  \]
  let s:command += s:options
  call job_start(s:command)
endfunction
nnoremap <silent> <Leader>gt :<C-u>call <SID>generateCtags()<CR>

これで任意のタイミングでtagsファイルを生成できます。
また、gitのフックを利用してclone時などに生成するようにしたりしておくと、さらに便利かもしれませんね。

こんな感じでVimなら、普段触れていない言語でも必要に応じて開発環境を気軽に整えることができるでしょう。


  1. 本家であるctagsは更新が滞っているようなので、最近はuniversal-ctagsの方を使っています。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away