役に立つやつ限定　地味なEclipseショートカット選手権

環境は Eclipse Luna(4.4.1)です。Javaソースを編集するときのショートカットです。

* 視覚的に地味　メニューやダイアログを表示せずに実行される
* 存在が地味　わかりやすい代替手段がある、似たショートカットが他にある

という基準で地味なショートカットを選出しました。

適当に選出すると13個になったので、13個で地味なショートカットランキングにしました。
1日1個のペースで2週間で身につくと思います。

# 第13位　`Ctrl + Shift + r`　リソースを開く
ワークスペースからファイルを選択して開くことができます。
xmlファイル、jsファイルなど、javaファイルに限らずに開けます。
![ctrl-shift-r.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/2d05c76f-9941-7c68-dbdc-88da4c8f1cff.gif)
## 地味ポイント
* ついついパッケージエクスプローラーのツリーを辿ってファイルを開きがちなので、ファイル名を覚えていれば確実に早い方法なのに使用頻度が低い
* `Ctrl + Shift + t`という類似のショートカットがあって、どっちがどっちなのかわかりにくい

`Ctrl + Shift + r`と`Ctrl + Shift + t`の違いは下表の通りです。

|キー|javaファイル以外のファイル|インナークラス|備考|
|:---|:---|:---|:---|
|`Ctrl + Shift + r`|探せる|探せない|リソース(resource)を開くので`r`|
|`Ctrl + Shift + t`|探せない|探せる|型(type)を開くので`t`|

この2つのショートカットで見た目がそっくりなウィンドウが開くのもグッドです。

## 派手ポイント
* ウィンドウが開いてしまうのは手痛い失点
* インクリメンタルサーチが利いていて、一文字入力するごとにめまぐるしく検索結果が変わっていく

# 第12位　Ctrl + o　クイック・アウトライン
アウトラインを開きます。絞り込み検索もできます。

![ctrl-o.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/0bdb37ff-933f-5587-dc7f-19b0928c2dfb.gif)

## 地味ポイント
* これを使えば普段はアウトラインを表示させる必要がないので、IDEの見た目がシンプルになる

## 派手ポイント
* 変数かメソッドかの違いだけではなく、`private`, `public`, `static`, `final`等の修飾子までアイコンで表示させている
* ウィンドウは開かないもののポップアップが開く。慎み深さを覚えてほしい

# 第11位　`Ctrl + Shift + Down`, `Ctrl + Shift + Up`　次のメンバへジャンプ、前のメンバへジャンプ
メンバからメンバへと移動できます。

![ctrl-shift-up,down.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/246c02c2-020d-25b3-918c-c9cfc3795ded.gif)

## 地味ポイント
* メンバの名称を覚えていれば`Ctrl + o`の方が早い

## 派手ポイント
* gifの通りアウトラインビューでのフォーカスも移動していく。アウトラインビューと同期している感じが派手。アウトラインだけを見ながら素早く目当てのところへ移動できてしまう

# 第10位　`Alt + Shift + a`　ブロック選択モードの切り替え
矩形選択できます。
私の手元では、できる環境やできない環境がありました。できない場合は、何らかのプラグインか何かが邪魔していると思います。
![alt-shift-a.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/8bb85485-66f9-e227-ef6f-7d1908d90500.gif)

## 地味ポイント
* ダイアログも何も出ずにすぐに実行される
* フォントの違いでブロック選択モードか否かを表現する微妙な感じ

## 派手ポイント
* 有効にするとコード全体のフォントがSerifになる。Serifは見出しとかに使うイメージが強いので見慣れない印象になる

# 第9位　`Ctrl + Space`でコードテンプレートを使用
`Ctrl + Space`といえばコード補完ばかりですが、コードテンプレートという便利な機能もあります。
テンプレートを入力できます。
テンプレートは自分で登録できるのでよく使うコードを登録すると便利です。

下のように定数を作ったり、
![ctrl-space.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/8411f46a-efcb-1bd3-0508-dcf1bbe24ed0.gif)

foreachを作ったりすることができます。
![ctrl-space-2.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/8ff7c210-bbed-cb47-eb13-8de60f967545.gif)

最初から登録されているコードテンプレートは[EclipseのJavaの全てのコード・テンプレートのまとめ](http://qiita.com/arai-wa/items/2a5c794490e98688ff2e)にまとめました。

## 地味ポイント
* `Ctrl + Space`はコード補完にばかり使われていて、ネットを見た感じでは、コードテンプレートはいまいち使われていない
* 型の指定部分や変数名の指定部分を、`tab`だけで順次選択状態にできる

## 派手ポイント
* ポップアップ

# 第8位　`Ctrl + t`　クイック階層
メソッドの呼び出し箇所にカーソルをおいていれば、そのメソッドの定義や実装を選択して開けます。
クラス名にカーソルを置いていれば、親クラスや子クラスを探せます。
![ctrl-t.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/8a7549a3-5d8d-735b-8f8c-b513c6d80771.gif)

## 地味ポイント
* `F3`や`Ctrl + クリック`とそっくり。abstractなクラスとそれを継承してある実装クラスがあるとき、`F3`だとどちらのクラスのメソッドを開くかを選べないが、`Ctrl + t`なら選べるという利点がある

## 派手ポイント
* ポップアップ

# 第7位　`F2` ツールチップ説明の表示
マウスカーソルをホバーしていると出てくるツールチップをキーボードで出せます。
マウスに手を移動させないで済みます。
![f2.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/2c8c88b9-d514-e715-1fb3-68e849f943c1.gif)

## 地味ポイント
* マウスカーソルをホバーさせるだけという非常に簡単な操作で代替できる

## 派手ポイント
* ポップアップ。背景色が薄黄色だったり、ポップアップの外縁が縁取りされていたりして目立つ

# 第6位　`Ctrl + 1`　クイックフィックス
エラー箇所の修正案を出してくれます。
エラーの原因もわかります。
単純なミスとかだとこれで治せます。

![ctrl-1.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/69a37dae-e6b5-2790-e8e7-d01f4f4f1f91.gif)

## 地味ポイント
* マウスカーソルをホバーさせていれば似たようなのが出る
* ポップアップが出るけど背景が白色（ユーザが操作する対象のポップアップは白色、読む対象のポップアップは薄黄色になっているようです、全体的に）

## 派手ポイント
* 白いダイアログで何かを選択するとさらに黄色いダイアログを出して詳細を説明するという2段構えは、このランキング内では他に類を見ない動き

# 第5位　`Ctrl + .`　次の警告・エラーへジャンプ
警告やエラー（イエローやレッドの波線が出ている場所）へジャンプできます。
これを使えばチェックし洩らしがありません。
![ctrl-..gif](https://qiita-image-store.s3.amazonaws.com/0/44676/409cacf2-21fc-d9fc-0b7f-3b2782ba75b8.gif)

## 地味ポイント
* `Shift`と組み合わせても前の警告・エラーへ戻ることができないという一本気な性格。ただし末尾まで行けば先頭へ戻れる

## 派手ポイント
* 特になし。さすがにこれ以上のランクともなると、地味さを極めたショートカットキーばかりだ

# 第4位　`Ctrl + j`　インクリメンタル検索
開いているソースをインクリメンタル検索できます。
![ctrl-j.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/52f2766f-fdc2-a9bb-288b-65c20f97b76e.gif)
ちなみに大文字小文字を区別しない検索になります。

## 地味ポイント
* インクリメンタルサーチできる機能がこのランクに位置することは通常ありえないが、下のようなとっつきずらさを考慮してこの位置づけとした
    * 普段あまり活用しないステータスバーにしか、現在検索中の文字が表示されない
    * インクリメンタルサーチの実行中は、`BackSpace`が、ソースの編集ではなく、検索文字列の1文字削除へと変わる

* 通常の検索から分離しているのでこの機能の存在自体に気が付きにくい点も好印象
  
## 派手ポイント
* なし

# 第3位 `Ctrl + k`　選択した文字列で次を検索
選択してある文字列と同じ文字列を検索します。
検索のためのウィンドウを開いたりしないので、スピーディに操作できている気分になります。
![ctrl-k.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/9ea76aea-f30f-2f89-595b-f27aeae89ea4.gif)

## 地味ポイント
* カーソルの位置が変わる以外、見た目上の何の変化もない
* 大文字小文字を区別するかどうかがわかりづらい。
通常の検索でチェックが付いているかどうかで決まる
![case-sensitive.jpg](https://qiita-image-store.s3.amazonaws.com/0/44676/5addc4bc-5fea-efe4-529d-62228c44e94a.jpeg)

## 派手ポイント
* ない

# 第2位　`Ctrl + q`　最後の編集位置
ソースをいろいろと散歩したあとに、最後に編集した個所へと戻れます。
戻ると言えば、`Alt + Left`が有名ですが、これは一発で最後の編集位置へと戻れます。
↓わかりづらいですね……。でも、これが地味なショートカットです。
![ctrl-q.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/ec6f2df3-14b8-ad78-2bc6-648f9721e1e9.gif)

## 地味ポイント
* `Alt + Left`で代替可能。ただしたくさん「戻る」場合は、わけがわからなくなりがちなので、`Ctrl + q`が分かりやすくて便利
* このショートカットキーを知らない人は、間違えて押すと、何が起こったのきっとわからない

## 派手ポイント
* なし

# 第1位　`Alt + /`　単語補完
文字列などを補完できます。
文字列のみならずメソッド名などからも単語を拾ってきて補完できます。

さらに文字列だけではなく、変数名を補完することもできます。

![alt-slash.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/61cd15f6-dd6d-39ae-e8f3-6cc951530ba0.gif)

## 地味ポイント
* `Ctrl + Space`での補完の陰に隠れがちで、なかなか気が付かない
* IntelliJとの比較で、なぜか、Eclipseでは文字列を補完できないと誤って紹介されていることがある
* Eclipseの設定を変えれば`Ctrl + Space`で同じことができるのでこのショートカットが不要になる。
下の画像の赤枠の部分にチェックを入れると
![word-proposal.jpg](https://qiita-image-store.s3.amazonaws.com/0/44676/e6fb3e59-9c56-d1d3-ec12-17027329da96.jpeg)

`Ctrl + Space`で単語補完できます。
![word-proposal_2.jpg](https://qiita-image-store.s3.amazonaws.com/0/44676/6618570e-7529-5ded-d9e4-7e61a10501cc.jpeg)

## 派手ポイント
* なし

# 全体的な感想

私が初めて知ったのは
* `F2`（マウスオーバーのツールチップを出す）
* `Ctrl + q`（最後の編集位置へ移動）
でした。両方便利に使っています。

[新人研修でドヤ顔で披露したらウケたEclipseのショートカット集](http://qiita.com/arai-wa/items/c2eb7387b5bf37b4ace4)で紹介したものを合わせると、Javaコードの編集でデフォルトで使えるものに関してはほぼ全てのショートカットキーをカバーしてあります。

カバーしていないもので人気なのは

* Ctrl + 2 クイックアシストの表示。ここからメソッドの抽出やローカル変数の作成ができる

だとか、

* Ctrl + 左右カーソル で単語単位でカーソル移動

といった世界中のエディタで共通のものくらいだと思います。

文字通り全てのショートカットを知りたい場合は、Eclipseで Window -> Preferences -> General -> keys を開くと、現在のショートカット設定のリストを見たり変更したりできます。