PhpStormで自分がよく使うショートカットです。PhpStormでまず覚えるべきショートカット とかぶっているのは書いてないのでお先にどうぞ。
IntelliJ IDEA でもわりと共通しています。面倒なので表記がMac専用ですがWindowsでもたぶん同じ機能が使えますよ、きっと。
無敵コマンド
⌘+⇧+A
出てきたポップアップに、こんなのできるかなぁ、できたはずだけどな、と、やりたいことをなんとなく英語で書くと、機能をメニューで選んで直接実行できます。ショートカットが割り当ててあればそれも表記されるうえ、入れた単語が設定ダイアログで見つかれば、設定の該当箇所を開いてくれたり。
定義と使用箇所を行ったり来たり
定義元へジャンプは、キャレット位置のワードに対して ⌘+B
する他にも、⌘+ワードをクリック
があります。コマンドキーを押しながらマウスカーソルをホバーさせたら、辿れるワードだけアンダーラインが出てくれます。ツールチップにシグニチャが出たりもします。なんでマウスを好んでいるかというと、キャレットの位置がそのままなのが嬉しいからです。
定義元へジャンプの逆をやるのが ⌘+⌥+F7
です。変数やメソッドを使っている場所へジャンプ。コンテキストメニューの Find by usage よりも素早くて、直前の検索ツールウィンドウの結果をクリアしてしまわないのが嬉しいです。
定義と使用箇所にジャンプする機能を使うなら、ぜひ憶えておいて欲しいショートカットが、 ⌘+⌥+←
です。Webブラウザの「戻る」と同じことができます。ほとんどのジャンプは、行き先のコードを参照するのみ、あってもせいぜい数行変更するだけで、だいたいはすぐに元のコードに戻ってきますよね。
「戻る」では戻れないぐらい探検しすぎたときは、最後に編集した場所に行く ⌘+⇧+⌫
が便利です。これ、戻る/進むのヒストリとは関係ないジャンプです。
ちなみにですが「進む」のは ⌘+⌥+→
です。戻りすぎたときにどうぞ。
移動するまでもないコード参照
F1
でキャレット位置のメソッドのDocコメントの内容が出せます。ドキュメントコメントは大事。
⌘+P
ではメソッドのパラメータヒントが小さく出てきます。普通の補完とドキュメントがあればいいじゃないかと思いきや、キャレット位置のワードがどの引数に対応しているかが、太字になってわかるという機能です。憶えておいて損はないですよ。
ドキュメントがない場合は定義のコードを見るしかないですが、いちいち定義元へジャンプしなくても、⌥+Space
で定義行がポップアップとして出てくれます。ちょっと参照したいだけの時はこの方が便利。
行きたいところにすぐに行く
⌘+O
で適当に名前を打ってクラスを開きます。開いたら Structure ツールウィンドウ... でもいいんですが、キーボードから手を離したり、ウィンドウのフォーカスを移動したりしたくはないです。
⌘+F12
で Structure ポップアップを開けます。そこで適当に何文字か打ってメソッド名を絞り込んでジャンプ。
文法的にクラス名とメソッド名を確実に指定できるので、grepで探してそこに行くより確実で処理も早いですね。
補完
文法にしたがった補完は ^+Space
ですが、単語レベルの補完 ⌥+/
もあります。
Map
や array()
の要素名、SQLで取ってきた結果のカラム名などは文字列だったりすることも多いので、それだと文法上意味のある単語と認識されません。そういうのを補完するのに都合がいいです。押すたびに、同じファイルのより手前に出てきた単語を探してくれます。
(PHPだと、array地獄な某フレームワークとか、全クラスがマジックメソッドに感染している某フレームワークとか、$repos->getEntity('Hoge')
ってクラス名なのに文字列じゃんって某ORMとか、とか… 単語補完ありがたいです)
キャレット位置より後に向かって探すときは ⌥+⇧+/
です。
選択やキャレット移動など
⌘+⇧+8
で矩形選択モードになります。個人的に矩形選択がないエディタは使わない主義です。
⌥+↑
と ⌥+↓
が面白くて、「構造的にひとつ広く選択」「その逆」です。キャレット位置→変数名→式→行→構文ブロック→メソッド定義全体、というふうに選択が広がったり狭まったり。名前や式をコピーするのにマウスを使ったりカーソルキーを連打しなくてもいいやつですね。
他にも修飾キーとカーソルの組み合わせで、次の単語まで、とか、行末/行頭とかいけるので、ひととおりやってみたら、ある種の濃いエディタを使っている人も納得だと思いますよ。
リファクタリングやコード生成など
^+T
と ⌘+N
最初はこれだけ憶えておけばOK。やりたいことをポップアップメニューで探して実行。どっちみち名前などを指定するためのダイアログが出てくるので、最初にメニューから選ぶのなんて大したことないですよ。
それでもカーソルキーとかマウスとか遠いよと言うような人は、メニュー項目に付いている番号を打てばいいと思います。
リファクタリング、オブジェクト指向バリバリに思えますが、経験的には、Rename と Extract と Inline をローカル変数やprivateに対してやるのが一番多い気がします。
バージョン管理
⌘+9
はいこれだけ。
git status
(あるいは他のバージョン管理システムの変更確認)した結果が常に見えている状態に。しかもエディタとリアルタイム同期。なにか操作して見えるんじゃなくて、常に見えているということが大事。
もしエディタが狭いと思ったらもういちど同じのを押せば隠せます。
最後にこれだけ
ESC
あまり意識されてないと思うのがこれ。当然のことながら、ポップアップメニューやダイアログが出てきたときは、ESC
キーで閉じることができますが、このキー、なんとウィンドウを閉じるキーというよりは、エディタに戻るためのキーと言ったほうが合っているのです。
つまり、ツールウィンドウにフォーカスが移ったとき、マウスに手を動かすことなくエディタにフォーカスを戻せるということ。バージョン管理を意識してコードを書いているときよくある操作は...
編集 → ⌘+9
→ HEADとのdiffを見る(選んで⌘+D
) → ESC
→ 編集再開
早いでしょ。