ショートカットおよびコード編集Tips

ずいぶん前に書いた記事にいろいろ加筆

カーソル移動・コードブラウズ

F3:Open Declaration

選択している?JavaElementの定義を開く.クラスならクラスの定義の,フィールドならフィールドの定義の場所にカーソルがあった状態で開く.

F4:Open Type Hierarchy

選択している?JavaElementの型階層を表示する.親のみ,子のみ,両方などが指定できる.階層の中から型を選んでF4を押すことで,選択した型についての階層を見ることができる.

C-t:Quick Hierarchy

選択している?JavaElementの型階層がHierarchyがポップアップ。C-oと同じく文字入力でフィルタリングできて,Enterで定義にジャンプする.F4と違い,メソッドにフォーカスがあたっていると,メソッドのオーバーライドの階層が表示される.

C-o:Quick Outline

Outlineがポップアップ。文字入力でフィルタリングができて、Enterで定義にジャンプ.ワイルドカード‘*’が使える.メソッド,フィールドへの移動に便利.F3と違って定義に飛びたい?JavaElementの使用箇所が近くに見当たらないがない場合に重宝する.

C-R:Open Resource

Workspace内のリソースを開く。クラスファイルを開くならPackage Explorerで探して開くより早い場合が多そう。Emacsバインドだと普通にC-x C-f. リソース名にはワイルドカード‘*’が使える.

M-Q key:Show View

任意のビューにフォーカスを合わせるためのコマンド。keyによってフォーカス先が変わる。例外として、‘q’だとShow Viewダイアログが出る。よく使いそうなのは

C-M-h:Open Call Hierarchy

フォーカスしてる?JavaElementの呼び出し階層が開く。マウスによりcallee(メソッドが読んでるメソッド), caller(メソッドを読んでいるメソッド)の変更が可能である。'C-.', 'C-,'で前/次の検索結果に移動できる。ジャンプとは言っても、フォーカスは検索ビューにあたったままなのでSwitch to editorのショートカットを設定しておくとそのまま編集に移れて便利

C-G:References in Workspace

フォーカスしてる?JavaElementを参照している箇所を検索する.F3の逆と考えればいい?。C-M-hと同様に'C-.', 'C-,'で検索結果間の移動が出来る

C-E:Switch to Editor

エディタにフォーカスが移る.M-Gとかでフォーカスが移動したあとにエディタに戻りたいときに使う

C-, (C-.):次(前)のエラーに移動

そこでF2もしくはC-1(Quick Fix)が便利。検索結果間の移動も同じショートカットが使える

C-P:

対応するカッコに移動する

C-j (C-J):Incremental find (Incremental find reverse)

インクリメンタルサーチ.ポップアップなしで検索する.カーソル移動に便利

C-PageUp (C-PageDown)

一般的なタブ切り替えショートカットが使える

コード編集

C-Space:Content Assist

JDTがよきに計らってくれます.EmacsバインドならM-/

C-F:Format

ソースコードのフォーマットを整える.

C-O:Organize Imports

importを最適化する.

C-1:Quick Fix

エラーの修正方法一覧がポップアップする.C-, などでエラーにフォーカスをあててから使う.

M-r:Rename

リファクタリング.現在フォーカスしている?JavaElementの名前を変更する。コピペ後の処理に最適

デバッグ

C-F11:Run

通常実行.実行されるConfigurationは設定によって『直前にRunおよびDebugしたもの』か『エディタでフォーカスしているリソースを含むもの』のどちらかである.

F11:Debug

デバッグ実行.実行されるConfigurationは設定によって『直前にRunおよびDebugしたもの』か『エディタでフォーカスしているリソースを含むもの』のどちらかである.

C-F2:Stop

デバッグを中止

  • F5, F6, F7, F8:ステップ実行とか
  • F5:メソッド呼び出しがあった場合,その定義に移動する
  • F6:メソッド呼び出しをそのまま通り越す
  • F7:ひとつ上のスタックに戻る
  • F8:ブレークポイントか終了するまで実行する
C-B:Toggle Break Point

現在の行にブレークポイントを設定する

Tips

既存クラスへのメソッド追加を3倍加速する(静的Method missing)

一体何度コンテントアシストを叩かなければならないのかわからないほどメソッドの定義はめんどくさいですよね禿げそうです。Eclipseのおせっかい機能を使ってこのわずらわしさを大幅に軽減します。もちろん、同様の小技はクラスやフィールドにも適用できます

  • こんなクソコードがあります。このクラスに新しくinit(float x, float y, float z, int type, String str)と、文字列を引数にとるinit()を追加したいと思いました。あくまで例なので意味はないです

  • おもむろに呼び出すコードを書きます。もちろん怒られます

  • 怒られた場所に'C-,'で移動し、'C-1'でQuickFixを呼び出します。ここでCreate methodを選択します

  • メソッドのスケルトンが生成されます。識別子が四角で囲まれていますが、これはTabやC-iで移動することができます。一度Tab(C-i)を押した後の状態が次のスクリーンショットです

変数名書くのだりーときの対処

変数名は一見して何をするのかわからないといけませんが、勢いに乗ってコード書いてるときに一々考えるのは面倒ですよね。長くなると、補完があるとはいえタイプも面倒です。そういうときは迷わず一文字変数を使いましょう。頭が冷えた時に落ち着いて名前を考えて、M-rによるリネーム機能で置き換えればいいのです。もちろん放置は厳禁です