へろへろもへじ

(ブログタイトル募集中)

【SublimeText2】PHPコーディング向けのカスタマイズ

先日PHPコーディングする際のエディタをEclipsePDTからSublimeText2に移行しました。使用歴は約1ヶ月程度ですが、ひと通り設定周りや利用しているパッケージが落ち着いてきたので備忘録として残しておきます。(デフォルトでも十分使える高性能なエディタですね、はい。)
また、よく利用するショートカットも合わせてまとめておきます。
※EclipsePDTに関するエントリーはこちら↓
【PHP】PHPの開発環境(仮)に関するメモ - f.retu.TechLog


(パッケージコントロールの導入)

Installation - Package Control


ビルドシステムにPHPを追加する

SublimText上からPHPを実行できるようにします。(なぜデフォで入っていないのか。。)
Sublime Text 2 >Tools > Build System > New Build Systemを選択し、以下のJSONを書き込み、
PHP」という名前(ファイル名は任意)でファイルを保存します。

{
    "cmd": ["php", "$file"],
    "selector": "source.php"
}


インストールしたパッケージ

  • GoToDocumentation(関数にフォーカスしてF1でPHPのマニュアルを開いてくれる)
  • Phpbeautifier(コードフォーマッター)
  • SublimeLinter(リアルタイムで構文チェックをしてアラート通知してくれる)
  • CTags(呼び出し先にコードジャンプする)
  • PHPCTags(CTagsのPHP用拡張)
  • XDebug(その名の通りXDebugを利用するためのパッケージ)
  • BracketHighlighter(括弧内のスコープをハイライトで強調してくれる)
  • SideBarEnhancements(デフォルトでちょっと貧弱なサイドバーをリッチにしてくれる)
  • IndentGuides(インデントをガイド線で視覚化してくれる)
  • Docblockr(IDEでは定番のスニペット。/**+enterでDocのひな形を作ってくれる)
  • PHPUnit(PHPUnitを利用するためのパッケージ)
  • PHPUnit Completions(PHPUnitの関数群のコードアシストをサポート)
  • VintageEx(SublimeText2をよりVimライクに)
  • IMESupport(日本語のインライン入力をサポート。Macではいらんです。)
  • SortTabs(タブのソート順を色々選べる)
  • AllAutocomplete(オートコンプリートの拡張)
  • SublimeCodeIntel(定義先の関数へジャンプしたり、シンタックスハイライトしてくれたり。CTags入れてるならいらないかも。)
  • PHPGettersandSetters(アクセッサメソッドのスニペットを提供してくれる)
  • AndyPHP(PHPの関数群をコードアシストをサポート)


よく使うショートカット

  • マルチカーソル:ctrl + マウスドラッグ or ctrl + d
  • コマンドパレット:ctrl + shift + p
  • GotoAnything:ctrl + p(:行番号,@シンボル)
  • 縦ウインドウ分割:ctrl + shift + #
  • 横ウインドウ分割:alt + shift + #
  • タブ切り替え:ctrl + tab
  • 呼び出し先にjump:ctrl + t ctrl + t(CTags)
  • 呼び出し元にjump:ctrl + t ctrl + b(CTags)
  • GREP:ctrl + Shift + f
  • 単語をドラッグ:ctrl + d
  • 行全体をコピー:単語を選択せずにctrl + c

※上記はwinの場合です。


その他のTips

PHPBeautifierがエラーで動かない(Win7)

1. モジュールをインストールする
pear install --alldeps channel://pear.php.net/php_beautifier-0.1.15

2. 以下の様なエラーに遭遇する
Traceback (most recent call last):
File ".\sublime_plugin.py", line 362, in run_
File ".\php_beautifier.py", line 33, in run
File ".\subprocess.py", line 633, in __init__
File ".\subprocess.py", line 842, in _execute_child
WindowsError:

3. php_beautifier.pyを以下のように修正
cmd = "php_beautifier"

cmd="php_beautifier.bat"

Popen([cmd, indent, "-l", filters, "-f", "-", "-o", "-"], stdin=PIPE, stdout=PIPE, stderr=PIPE)

Popen([cmd, indent, "-l", filters, "-f", "-", "-o", "-"], stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=True, creationflags=subprocess.SW_HIDE)

4. 以下の様なエラーに遭遇する
PHP Strict Standards: Non-static method Console_Getopt::readPHPArgv() should not be called statically in /usr/bin/php_beautifier on line 70

5. php_beautifier.phpを以下のように修正(Line:53)
error_reporting(E_ALL);

error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);

Ctagsがエラーで動かない(Win7)

PHPUnitがエラーで動かない

  • プロジェクトの直下にphpunit.xmlを用意する
  • ファイルを開いて右クリック->PHPUnit->Run These Testsを選択する。

テーマを"Phoenix"に

  • パッケージコントロールから"Theme Phoenix"をインストールする
  • 以下、Settings-Userに以下を追記する。

"phoenix_color_green": true,
"phoenix_sidebar_tree_medium": true,
"phoenix_color_expanded_folder": true,
"phoenix_solid_current_tab": true

ctrl+tabでタブ移動を順繰りにできるようにする

  • Key bindings - Userに以下を追記する。

{ "keys": ["ctrl+tab"], "command": "next_view" },
{ "keys": ["ctrl+shift+tab"], "command": "prev_view" },
{ "keys": ["ctrl+pagedown"], "command": "next_view_in_stack" },
{ "keys": ["ctrl+pageup"], "command": "prev_view_in_stack" }


参考サイト