読者です 読者をやめる 読者になる 読者になる

しおしお

IntelliJのあれやこれや

IntelliJ IDEA14でのコード補完を整理してみた

コード補完の設定(IntelliJ IDEA12版)へのアクセス未だにあるので、バージョン14でのコード補完どうなってるか整理してまとめてみた。

コード補完の設定画面

バージョン14から設定画面ガッツリ変わったので、Code Completionの設定する場所にたどり着くの毎回苦労する感あります。
f:id:sioiri:20150127225910p:plain

設定内容

Case sensitive completion
候補を絞り込むときの条件(どの程度厳密にするか)を選択する。

選択肢 内容
All 大文字小文字完全一致で候補が出るようになる。
f:id:sioiri:20150127234406p:plain
None 大文字小文字を区別せずに候補が出るようになる。
f:id:sioiri:20150127235341p:plain
First letter 最初の文字のみ大文字小文字を区別して候補を出します。
f:id:sioiri:20150127235556p:plain

私は、Shift押すのとか面倒なのでNoneを選択してる感じです。(一時期、変数とクラス名区別してくて、First letterを選択してたけど、わたしにはあまりあわなかった)

Auto-insert when only one choice on
候補が単一だった場合の振る舞いを選択する。チェックをONにすると選択候補が一つだけだった場合に、リストを表示せずに候補を確定状態にします。
これは、チェックONにしといたほうが良いですね。

Sort lookup items lexicographically
候補リストの表示順を設定します。チェックをONにすると辞書順に表示されます。

チェックON、OFFでの違いはこんな感じになります。これはどっちでもいいような気がします。(私は、チェックOFFにしてますが)

チェックをONにした場合
f:id:sioiri:20150128232201p:plain
チェックをOFFにした場合
f:id:sioiri:20150128232205p:plain

Autopopup code completion
自動で候補をリスト表示するかどうかを選択する。これは超絶便利なのでチェックしてあげるべきです。

Insert selected variant by typing dot, space, etc.
候補選択時に、ドットやスペースをタイプした場合にその候補を確定させるかどうかを選択する。

これは、超絶便利じゃないか!と思った時もあったけど、めっちゃストレス溜まるからチェックは外してます。私が使いこなせなかっただけかもだけど、お前じゃないんだよって候補が選択されることがあったので耐えられなくなりましたね。

Autopopup documentation
ドキュメント(Javadoc)を自動で表示するかを選択する。チェックした場合には、どれ位経過後に表示するかをミリ秒で入力する。
私は、見たくなった時に表示できればいいのでチェックはしていません。

Autopopup in
パラメータ情報を自動で表示するかどうかを選択する。チェックした場合には、どれ位経過後に表示するかをミリ秒で入力する。
私は、見たくなった時に表示できればいいのでチェックはしていません。

Show full signatures
パラメータ情報でどこまで表示するかを選択する。チェックすると、メソッド名や戻り値も表示されるようになる。私は長くなると見づらくなるのでチェックはしていないです。

IntelliJ IDEA12に頃のコード補完の設定画面は、こんな感じでした13からauto popupさせる時間の設定がなくなったりしてだいぶスッキリした感じがあります。
f:id:sioiri:20150127234535p:plain

いろいろなコード補完を使ってみよう

Basic Completion
最もよく使われる補完タイプだと思います。デフォルトだと、Ctrl + SpaceがBasicな補完タイプです。あとは、AutopopupなやつもBasicタイプだと思います。

こんな感じに、超絶曖昧な情報でもいい感じに候補を表示してくれてかなり頭いいかんじです。
f:id:sioiri:20150129222457p:plain
キャメルケースの各ワードの先頭文字で候補絞ってくたりもする。
f:id:sioiri:20150129222808p:plain

Basic Completionで候補表示時にもう一度Ctrl + Spaceで、その昔存在していたClass Name Completionぽい絞りこみが行われる。例えば、依存関係で参照可能なクラス名やstaticなフィールドやメソッドが候補として表示される。

Smart completion
そのスコープないで適切なもの(変数に代入可能なものやキャストで利用可能なクラスのみなど)のみを候補表示してくれる。デフォルトだと、Ctrl + Shift + SpaceがSmartな補完タイプです。
Basicと比べるとかなり頭良い感じです。

こんな感じに、Basicタイプで表示された候補がSmartタイプに切り替わることでかなり絞りこまれています。
f:id:sioiri:20150129225143g:plain

SmartタイプもBasicと同じように、2回モードが有りかなり賢い候補の表示がされます。
下の動画のように、最初のSmartタイプでは候補がないと言われるけど、さらにSmart補完を行うことでコンテキスト内で利用可能な変数やメソッドが持っているメソッドなどまでたどって候補を表示してくれます。
これめっちゃ便利なやつです。
f:id:sioiri:20150129225733g:plain

Smart2回タイプでは、配列→List変換の候補表示もしてくれたりする。
f:id:sioiri:20150129230407g:plain

Postfix Completion
変数名やメソッド名の後に.(ドット)とキーワードを入力することで、対応するテンプレートを展開してコード補完してくれるやつです。
例えばnullチェックの分岐テンプレートは、nullキワードで展開できます。
f:id:sioiri:20150129230959g:plain
利用可能なテンプレート一覧は、SettingsのEditor -> General -> Postfix Completionから確認できます。
割りと大量にあります。
f:id:sioiri:20150129231129p:plain

Words Completion
ファイル内の単語を補完してくれる。これは、コメント内や文字リテラル内のやつも候補に出してくれる。デフォルトだとAlt + Slashで利用できる。
この補完は、候補をリスト表示してくれるのではなく、Alt + Slashをのたびに次のワードを表示してくれる。

検索窓のワード補完
ファイルない検索の窓でCtrl + Spaceをしてあげるとそのファイル内のワードを候補で表示してくれる。ほとんど使ってないので便利さよくわかってない。
f:id:sioiri:20150129231716p:plain

まだまだ、いろいろありそうな気がするけど長くなったのでこのへんで終わりにする。