Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

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

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

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

インデントの設定をする

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

augroup vimrc-filetype
  autocmd!  " PHPだったらインデント幅が4で
  autocmd BufNewFile,BufRead *.php setfiletype=php
  autocmd FileType php setlocalexpandtabtabstop=4softtabstop=4shiftwidth=4  " Rubyだったらインデント幅は2にしたい
  autocmd BufNewFile,BufRead *.rb setfiletype=ruby
  autocmd BufNewFile,BufRead *.rubysetfiletype=ruby
  autocmd FileTyperubysetlocalexpandtabtabstop=2softtabstop=2shiftwidth=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:resultendfunction

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

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

universal-ctagsを使う

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

$ ctags -R

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

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

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

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


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


Viewing all articles
Browse latest Browse all 5608

Trending Articles