新人研修でドヤ顔で披露したらウケたEclipseのショートカット集

最近新人研修（プログラミング未経験者・大学で専攻など、ごちゃまぜ）に関わることがありました。
適当なタイミングでEclipseのショートカットキーを教えていたのですが、実演してあげると食いつきがよかったです。

ウケがいい≒新人から需要があるといえそうですし
教えるほうも教わるほうもモチベーションを保ちやすいです。

その点で、ウケるかどうかは大切な視点のひとつだと思います。
なので、ウケのよさランキングの形式で、ショートカットを紹介したいと思います。

環境は、WindowsでPleiadesのやつ（http://mergedoc.sourceforge.jp/ ）を使って、Javaを教えていました。

# 第20位 `ctrl + alt + k` スネークケースとキャメルケースの切り替え
変数名やメソッド名を選択した状態で`ctrl + alt + k`
![cammel.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/af7215f3-7f20-09ce-645d-554abe121c88.gif)
教えていたのはJavaなのですが、C言語のようにスネークケースで変数名等を書いている人がいました。
キャメルケースに直すためにこのショートカットを教えました。
まったくウケませんでした。
ちなみに、全て大文字化の`ctrl + shift + x`と組み合わせれば、下のように、キャメルケースで`fooBarHoge`という具合に書かれている定数名を、FOO_BAR_HOGE というよくある形式に修正するのがすぐにできます。
![renameConst.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/aac7a5a0-9871-02cd-5b6c-9507fff3a22b.gif)

# 第19位 `ctrl + shift + o` import文の編成
`ctrl + shift + o`で不要なimport文を削除したり、ソートしたり出来るのですが、予想外に受けが悪かったです。
![formatImports.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/f3ace7a8-751d-e988-adb1-4a32ba2ad2a7.gif)
これをしなくてもコンパイルエラーにならなくて、プログラムが動いちゃうのが原因でしょうか？

http://qiita.com/arai-wa/items/da807fb99a18a47b35f2
で紹介した、保管アクションの設定で、上書き保存時に自動的にimport文の編成を行うように設定できます。

# 第18位 `ctrl + Right` or `ctrl + Left`  で区切りの良い場所へカーソル移動
`ctrl + Right` や `ctrl + Left`で、単語の境目などの区切りがいい場所へ順次カーソルを移動できます。
![moveCursor.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/fe4d6513-df6b-5f01-af88-14d17b5a42d6.gif)
shiftと組み合わせると、範囲選択のスピードが上がります。
Eclipseに限らずほとんどのエディタで使える操作方法なので、わりと便利です。

# 第17位 `ctrl + space` テンプレート・プロポーザル
たとえばforeachと入力して`ctrl + space`で、拡張for文を作れます。
![foreach.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/bf63c9f8-bb7b-2be2-550d-09c8535a7c3a.gif)
そこでさらに`tab`キーを押せば、カーソルをいい感じに動かしてくれます。
http://qiita.com/arai-wa/items/da807fb99a18a47b35f2
で紹介したTemplatesに独自のテンプレートを追加することも出来るので、
よく使うコードを登録しておくと便利です。

# 第16位 `ctrl + e` タブを検索
`ctrl + e`で開いているタブをリストにしてくれます。
しかも絞り込み検索も出来ます。
![changeTab.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/1d6c5cb7-5a2b-d521-3b57-37052721f678.gif)
私は`alt + shift + t`の方を良く使います。タブを開いていようがなかろうが、好きなファイルを開けるので。

# 第15位 `alt + shift + c` メソッドのシグネチャ変更
![changeMethod.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/4c06e846-a4b4-2960-bc9f-ddf997806e57.gif)
開くダイアログがごちゃごちゃしていてとっつきにくいせいか、あまりウケませんでした。
参照元なども自動的に書き換えてくれるので、非常に便利です。

# 第14位 `alt + shift + Up` or `alt + shift + Down` 選択範囲の拡大縮小
変数→行→for文→メソッド という具合に、選択範囲を、徐々にスコープ（？）を広げながら拡大、そして反対に縮小できます。
![select.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/7bfd0a14-bbf2-c59c-26ae-8292f4573f34.gif)
すばやく選択範囲をコントロールできるので、私は多用します。

# 第13位 `alt + shift + t -> a` 定数を抽出
直値を定数に抽出できます。
![const.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/10c2daa6-7a1b-8080-a9e0-25e4a3d22705.gif)
定数はクラスの先頭に書くことが多いですが、そこまで画面をスクロールさせなくても
ダイアログでアクセス修飾子や定数名を設定できるので、手軽です。
プレビューでdiffを見られるので影響範囲も確認できます。

# 第12位 `ctrl + .` 次の警告・エラーへジャンプ
![jumpToError.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/d4bc75ec-b83b-7eff-62da-7c4a2488ded1.gif)
これを使えば警告やエラーを次々と漏れなく見て回ることができます。
第8位の`ctrl + 1`と組み合わせれば、すばやくエラーの修正が出来ます。

# 第11位 `alt + shift + l` ローカル変数の抽出
↓のように使えば、変数宣言の、イコールから左側を手で書かずにすみます。![makeVar.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/9fc1a0fb-6c52-9cf7-ebd0-be928d3f444d.gif)
newだけではなく、メソッドの戻り値を変数として抽出したりもできます。

# 第10位 `alt + a -> f` ファイル検索
grepです。
指定した検索ワードを含むファイルと、どの部分に含んでいるかが分かります
![searchFile.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/9f1e590f-8a5e-a741-e1ef-5b40e0ad4f60.gif)
ちなみに`ctrl + H`でJavaのファイルに限って検索することも出来ます。

# 第9位 変数名を途中までタイプして`ctrl + space` 変数名補完
![assist.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/bcecec71-cab4-47b1-8ff3-de030b52854b.gif)
ほとんど必須なレベルのショートカットですが、予想したほど喜ばれませんでした。
「変数名くらいならぽちぽちタイプしますよ」というところでしょうか。

# 第8位 エラーや警告の箇所を選択して`ctrl + 1` 修正方法を教えてくれる
メソッドにreturn文が足りないときにとりあえず自動的に追加してコンパイルエラーをなくしたり出来るので、便利です。
![fixError.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/bde6ad9b-97c8-c701-10f5-4d54255ef525.gif)
新人だと、Javaの文法だとかを徐々に知っていくための最初のステップとして使うのは、いいことだとおもいます。

# 第7位 `ctrl + shift + f` コードフォーマット
`ctrl + shift + f`でインデントやスペースやらを自動的に整えてくれます。
これも、保管アクションで、ファイル保存時に自動的に実行させられます。
これが一番喜ばれると思っていたのですが、やらなくてもコンパイルエラーにならないせいか、盛り上がりませんでした。
![codeFormat.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/2b3cac84-369f-57ce-7136-9cb0daf04b10.gif)

# 第6位 クラス直下でメソッド名だけを書いて`ctrl + space` メソッド作成
![makeMethod.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/a8d8ebdf-6323-b862-b148-dd3802929bd1.gif)
予想以上にウケがよかったので驚きました。
今になって思えば、「privateとかpublicとか考えるのが面倒なのでこのショートカットを使ってた」という人もいるかもしれないので、もしそうなら、あまり良くない傾向。
ちなみに`main`と書いて`ctrl + space`でいわゆるmainメソッドを作れますし、親クラスのメソッドと同じメソッド名を書けば、自動で`@Override`をつけたりしてくれます。

# 第5位 `alt + Right` or `alt + Left` 戻る・進む
`alt + Right` or `alt + Left` で開いていた場所を戻ったり進んだり出来ます。
ブラウザの戻る・進むみたいなものです。
たくさんのファイルを開いて、それぞれをちょこちょこと編集するときに便利です。
コードレビューのときにも使ったりしていました。
![previousNext.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/fe60c243-152a-4d02-fe70-5ce78806f10f.gif)
↑は、分かりづらいですが、操作例です。

# 第4位 `ctrl + d` 行削除
`ctrl + d`でカーソルがある行を削除できます。
複数行選択している状態で使えば、複数行丸ごと削除できます。
![deleteLine.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/d9d53553-0327-192b-25d7-d91df3fa1c86.gif)
試行錯誤でいろいろな場所にコメントアウトの行が出来たあとに、
それらをすばやく削除するのに使っているようでした。

# 第3位 `alt + shift + r` 名前変更
変数やメソッドの名前にカーソルを置いて`alt + shift + r`で名前を変更することが出来ます。
呼ばれている箇所も自動的に同様に変更してくれます。
![newName.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/dd30d136-f6c5-0ccd-1e7c-f9b7969c27b0.gif)
複数の場所が同時に書き変わるので見た目が派手なのもウケた要因だと思います。

# 第2位 `ctrl + /` コメントアウト
`ctrl + /`でカーソルがある行をコメントアウトできます。
複数行選択している状態で使えば、複数行丸ごとコメントアウトできます。
![comentOut.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/3b2a4ed4-a288-60cb-ac5f-bb8d506042ef.gif)
いろいろと試行錯誤するときに使ってもらえていました。

# 第1位 `ctrl + alt + h` 呼び出し階層を開く
メソッド宣言の上やメソッドの定義の中で`ctrl + alt + h`で、そのメソッドがどこから呼び出されているかを調べることが出来ます。
![caller.gif](https://qiita-image-store.s3.amazonaws.com/0/44676/c9bcf0a4-9d9b-172b-9df3-17b90e4a6655.gif)
他人のコードを読む手がかりにしたり、メソッドの呼び出し元が全部分かるので影響範囲を調べられたりと、かなり使用頻度が高いです。
新人研修で渡されたサンプルコードを解読したり、デバッグをしたりと、役立ててもらえていました。

# 反省
ここに書いたものを一人の人物に教えたのではなく、
いろいろな人に、いくつかを教えたり、教えなかったりという感じでしたが、
それでもなお、ちょっとたくさん教えすぎたかな？感があります。
次の機会があれば、ランキング上位のものに教えるものを絞って、定着させてもらう方に力を傾けていい気がしました。

# ここに書かなかったやつだと `ctrl + o` でアウトライン表示
アウトライン表示 したあとに、さらに絞り込み検索をして
任意のメソッドや変数に飛べます。
クラスがバカでかくなってしまったときには必須レベルで使っています。