PhpStormのマクロが便利すぎてヤバい
PhpStormでマクロを初めて使ってみたけど便利な使い方出来て、捗りそうだなーっていうお話。
CakePHPとかのフレームワークを使ってると、テンプレート→別テンプレートに飛ぶことが多くて、その度にファイル名入力してジャンプするけど若干煩わしい。
そんなわけで、『GotoFileアクションにシングルクォーテーション内のファイル名を送る』マクロを作ってみた。
※以下はIdeaVimプラグインを入れてVimキーバインドになっている想定です。
手順は以下の通り。
1) [Edit]-[Macro]-[Start Macro Recording]を選択
2) エディタ上に任意の箇所で[vi']-[Ctrl+Shift+A(GotoFile)]の順に入力
3) [Edit]-[Macro]-[Stop Macro Recording]を選択
4) 任意のマクロ名を指定して保存
これでマクロが完成。
次に、作成したマクロに任意のショートカットを割り当てる。
あとは、ジャンプしたいファイル名が書かれているシングルクォート内で、先ほど作成したマクロを実行するだけ。
こんな感じ。
PhpStorm上のエディタ機能だけでなく、自前でインストールしたプラグインとも組み合わせてマクロが組めるみたい。頻繁にやる操作をマクロ化しておけば効率も桁違いに上がるはずなので、積極的につかってみようとおもう。
PhpStormでちょっと便利な『ソースコードの階層まで自動的にスクロール』する機能
最近知ったPhpStormのちょっと便利機能を紹介。 今時のフレームワークとか使ってて、コードが多いと意外と面倒なのがディレクトリ移動。 基本的にファイル移動はファイルとかクラス名指定でジャンプするけど、ディレクトリツリーからファイルを辿りたくなることもしばしば。
この設定をしておくと、「常に開いているファイルまでディレクトリツリーが自動的に開いてスクロールする」というスグレモノ。Find Actionにも出てこないし、Preferencesからも設定出来ないので、知らない人も多そう。
設定方法はとても簡単。Tool Windowの[Project]上で右クリック→[Autoscroll from Source]にチェックを入れるだけ。
チェックをしてある状態だと、Project内のディレクトリツリーが開いているファイルまで自動的にスクロールしてくれるようになる。
こんな感じ。 ちなみに同じ設定欄にある[Autoscroll to Source]はディレクトリツリー上で選択したファイルを自動的に開くという設定。こっちの設定は正直使い道が分からない・・・。
AppCode+Dashでドキュメント検索を超快適にする
アプリ開発でAppCodeを使っててもどかしいのがドキュメント検索。
Quick Documentationで開いてもクラス名程度しか書いてなくて欲しい情報が全くない。 どうにかならんかなーって思ってたら、Dashっていうドキュメントビューアが快適と聞いたので連携させてみた。
Dash参考:
http://www.key-p.com/blog/staff/archives/1337 http://d.hatena.ne.jp/naoya/20130218
Dash単体でショートカット設定出来るみたいだけど、「選択している文字列をドキュメント検索」のショートカットがJavaの制限?とかで、AppCode内からは上手く機能しない。
なので、別途AppCodeのプラグインを入れる必要がある。
Github上からjarファイルをダウンロードしてAppCode上からプラグインとしてインストールするだけ。
PreferencesのKeymapに「Search in Dash」っていう項目が追加されてるので、任意のショートカットを割り当てて完了。
後は検索したい任意のワードの下でショートカットを押すだけ。Dash本体にもショートカットを割り当てておいて、表示/非表示を切り替えられるようにしておくともっと快適かも。
RetinaのMacでPHPStormが異常に重いときの対策
環境周りでハマったのでメモ。
RetinaのMacbookでPHPStormを起動してて、エディタでなんらかのファイルを開くと、毎回15秒〜30秒くらいフリーズする始末。。
いろいろ試した結果、[低解像度モード]で起動すれば起動すれば解決!
手順は以下の通り。
Finder上でApplicationディレクトリを表示して
右クリック->情報を見る->低解像度で実行 にチェックを入れて実行。
BehatでUserAgent指定
最近PHPで受入れ試験書く時にBehat使うことが多いので。
PCとスマートフォンとフィーチャフォンで表示項目違うときとか、 UserAgentを切り替えられるようにしておくと便利。
<?php
/**
* @var $world FeatureContext
*/
$steps->Given( '/^"([^"]*)" でアクセスしている$/', function ( $world, $table ) {
switch ( $table ) {
case "フィーチャフォン":
$user_agent = "KDDI-CA39 UP.Browser/6.2.0.13.1.5 (GUI) MMP/2.0";
break;
case "スマートフォン":
$user_agent = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5B108 Safari/525.20";
break;
default:
$user_agent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.0 Safari/537.13";
break;
}
$world->getSession()->getDriver()->getClient()->setServerParameters( array( 'HTTP_USER_AGENT' => $user_agent ) );
} );
?>