はじめに
前回に引き続きAndroid Studioのさまざまな移動方法について説明します。
前回の補足
細かなところで違いがありますが、
- マウスオーバーで "Quick Documentation"
- もともとカーソルを対象に移動して "Quick Documentation" を実行すれば済む話なのですが、
Ecilpse移行組に言わせると 「ドキュメント参照するためだけにカーソルを移動するのが煩わしい」 そうです。 - そのあたりの要望を汲んでかAndroid Studioでも、
マウスオーバーで "Quick Documentation" ができます。 - この機能を有効にする/
ドキュメント参照までの待ち時間については 「Preferences / Editor」 の 「Show quick doc on mouse move」 で設定できます。ちなみに筆者はこの機能を鬱陶しいと思っているのでOFFにしています。 - Ctrlキーを押しながらマウスオーバーでちょっと不思議な宣言表示
- Ctrlキーを押しながらマウスカーソルを移動するとクリック可能な場所がハイパーリンク表示されます。この状態の対象にそのままマウスオーバーすると、
図2のような定義情報がポップアップされます。 - この機能に相当するコマンド名は存在しておらず、
どうやらこのキーコンビネーションでのみ実行可能な機能のようです。また、 これに相当する機能はEclipseには無いと思います。 - ポップアップに表示される定義情報にもハイパーリンクが表示されるので、
次に説明する 「宣言に移動」 の役に立つのかも知れません (筆者は、 この機能をほとんど使ったことはありません)。 - Ctrlキーを押しながらマウスの左クリックで
「宣言に移動」 - メニューバーの
「Navitate → Declaration」 相当の機能です。Eclipseの場合、 宣言部や実装部などジャンプする場所を選択できますが、 Android Studioの場合、 宣言部にだけジャンプします。 - Eclipseとは異なり、
真ん中ボタンのあるマウスの場合、 真ん中ボタンのクリックでも代用できます。 - MacBookなどでは
「Ctrlキーとポインティングデバイスのクリック」 の組み合わせは右クリックと判断されるため 「宣言に移動」 と一緒にコンテキストメニューも表示され、 とても鬱陶しいです。そのため、 当然のように筆者はこの機能を使いません。
一連のマウス操作を図4に示します。
EclipseではSHIFTキーとマウスオーバーで、
前回の続き
ツールウィンドウが絡むため、
- 「Navigate → Type Hierarchy」
- Eclipseの
「ナビゲート → 型階層を開く」 に相当します。 - 「Structureツールウィンドウ」
でも代用が利くので、 あまり使ったことはありません。 - 「Navigate → Method Hierarchy」
- Eclipseに相当する機能はありません。
「ナビゲート → 実装を開く」 が比較的類似している機能です。 - どのクラスがメソッドをオーバライドしているか一覧表示されますが、
Eclipse同様"Implementation(s)", "Super Method"など似たようなコマンドで代用が利くので、 あまり使ったことはありません。 - 「Navigate → Call Hierarchy」
- Eclipseの
「ナビゲート → 呼び出し階層を開く」 に相当します。 - メソッドの呼び出し階層を開きます。Eclipseの同機能と異なりインターフェイスや抽象クラスの実装クラスも追跡します。追跡性能がとても高いため、
ほかの2つと違い多用している機能のひとつです。
それぞれ実行すると
「Hierarchyツールウィンドウ」
後で説明する
この中で覚えておいて欲しいのは
ある検索結果を残しておきたい場合は、
Eclipseにも似たような機能
「Close」
この
検索と置換
エディタやIDEなら持っていて当然の検索機能についてです。
一般的なアプリケーションやIDEに使い慣れていると、
エディタ内の検索・置換
Eclipseの
- 「Edit → Find → Find...」
- 「Edit → Find → Replace...」
実行するとエディタウィンドウの最上部に検索・
No. | 意味 |
---|---|
(1) | 以前に検索した検索ワードや置換ワードの履歴です。この手の機能にしては珍しく、 |
(2) | 検索ワードの出現箇所に移動します。 |
(3) | 検索結果を、 |
(4) | 複数行の検索ワードを入力できるように検索ワード入力エリアを切り替えます。複数行検索ワードの場合、 |
(5) | ONにすると、 |
(6) | ONにすると、 |
(7) | ONにすると、 |
(8) | この不思議なオプションは、mytest Mytest MYTEST 」mytest 」yourtest 」yourtest Yourtest YOURTEST 」 |
(9) | ONにすると、 |
(10) | 現在の出現箇所を置換ワードで置き換えます。 |
(11) | すべての出現箇所を置換ワードで置き換えます。 |
(12) | 現在の出現箇所を置換対象から除外 |
(13) | 検索・ |
見ての通りなので使い方に悩むことは無いと思います。検索はインクリメンタルサーチです。検索ワードをタイプする都度、
置換の場合、
検索ツールバーからエディタにフォーカスを戻すにはESCキーを押します。
あと、
指定したディレクトリ内の検索・置換
エディタ内だけではなく、
- 「Edit → Find → Find in Path...」
- 「Edit → Find → Replaces in Path...」
これらは、
コマンドを実行すると検索と置換、
「Options」*
と?
のワイルドカードが使え、,
)
どちらも良くあるテキストエディタに備わっている検索・
ちょっとした引っかけなのですが
検索を実行して検索結果を表示するのが
「Findツールウィンドウ」
左側のツールバーで覚えておいた方がよいアイコンは次の3つです。
- Settingsアイコン
- 「Find in Path」
や 「Replace in Path」 ダイアログを再表示します。 - 後述する
「使用箇所の検索」 結果も 「Findツールウィンドウ」 に表示されます。どのような場合でも、 Settingsアイコンを押せば設定ダイアログが表示されるワケでは無さそうです。検索した方法によってはSettingsアイコンを押しても何も起きません。 - Rerunアイコン
- 現在の条件で再度検索を実行します
(検索結果の更新)。 - Export to Text Fileアイコン
- 検索結果をテキストファイルに書き出します。
- いったん図16のようなプレビューが表示されるので、
ファイルに書き出さずクリップボードにコピーすることもできます (「Copy」 ボタンを押す)。
それと以下のように検索結果に移動するアイコンと
- Previous Occurrence:前の出現箇所へ移動
「Navigate → Previous Occurrence」 と同等。
- Next Occurrence:次の出現箇所へ移動
「Navigate → Next Occurrence」 と同等。
このコマンドは
右側のツールバーには主に検索結果の表示方法に関する機能が集まっています。アイコンはトグルになっており、
「Hierarchyツールウィンドウ」
置換コマンドなのですが、
使用箇所の検索
無理矢理Eclipseの機能に当てはめると
通常の検索と異なり、foo
」
メニューバーの順序とは異なりますが、
- 「Edit → Find → Highlight Usages in File」
- カーソル下にあるキーワードの出現箇所をハイライト表示します。今、
編集しているファイルだけが検索対象です。Eclipseの 「検索 → ファイル内での出現箇所」 に相当します。 - 検索対象が予約語やコメント内のテキスト、
文字列リテラルの場合、 "Find Word at Caret"と同じ扱いとなります。ハイライト間の移動は"Find Next"、 "Find Previous"で行い、 ESCキーでハイライト表示をキャンセルします。 - 便利な機能ですが、
普通に使っているだけでもカーソル下にあるキーワードの使用箇所が自動的にハイライト表示されるので、 画面内に収まる程度のコード量のであれば見ただけで使用箇所を把握することができます (ただし、 使用箇所へジャンプすることはできません)。 - このコードの自動ハイライト表示は
「Preferences / Editor」 の 「Highlight usages of element at caret」 でON/ OFFを設定できます。 - 「Edit → Find → Show Usages」
- カーソル下にあるキーワードの使用箇所をポップアップ表示します。プロジェクト全体が検索対象になります
(正しくは後述する"Find Usages Settings..."の設定に依存します)。 - このポップアップのツールバーにある
「Open Find Usages Toolwindow」 () から次に紹介する"Find Usages"に移行することができるため、 ショートカットキーを覚えるなら断然こちらをオススメします。 - なお、
このポップアップ中でも "Quick Definition" や "Quick Documentation" が利用できます。 - 「Edit → Find → Find Usages」
- カーソル下にあるキーワードの出現箇所を検索し、
その結果を 「Findツールウィンドウ」 に表示します。検索対象は先ほど説明した"Show Usages"と同じです。 - 検索結果が
「Findツールウィンドウ」 に表示されているため、 出現箇所の移動は"Find Next"、 "Find Previous"ではなく、 "Next Occurrence"と"Previous Occurrence"になる点に注意して下さい。 - "Find Usages"で検索した場合、
「Findツールウィンドウ」 のツールウィンドウ右列のアイコンが若干増えます。増えた分のアイコンの意味は表2の通りです ("Show Usages"のポップアップウィンドウに出ているアイコンも同様です)。 -
表2 "Find Usage"で増えたツールバーアイコンの意味 No. 意味 (1) 検索結果の種別に応じてカテゴリ分けします。カテゴリは英語表記ですが、 検索結果を把握しやすいので、 ONにすることをオススメします。 (2) 検索対象が読み出しアクセスしている箇所を表示します。 (3) 検索対象が書き込みアクセスしている箇所を表示します。 (4) 検索対象がimport文で宣言されている箇所を表示します。 - 「Edit → Find → Find Usages in File」
- "Find Usages"を現在編集中のファイルに限定したコマンドです。"Highlight Usages in File"があるため、
このコマンドの存在意義はほとんど無いと言って良いでしょう ("Highlight ~"が登場するまでは意義がありましたよ)。 - (元になったIntelliJでは)
昔からあったコマンドのため比較的覚えやすいショートカットキーが割り当てられています。正直もったいないので、 そのショートカットキーを奪い取って"Highlight Usages in File"あたりに割り当て直した方が幸せになれます。
「機能は似てるけど、
"Show Usages"と"Find Usages"の検索範囲は
このコマンド、
このコマンドの利点に、
「Find Usagesダイアログ」
- パッケージで検索
- package文やimport文などパッケージを示しているコンテキスト上でコマンドを実行します。検索するパッケージによっては、
多量の結果が出力されます。 - 「Usages」:そのパッケージの使用箇所を検索します。大抵はそのパッケージのimport文しかヒットしません。
- *「Usages of classes and interfaces」:そのパッケージに含まれているクラスやインターフェイスの使用箇所を検索します。
- クラスやインターフェイスで検索
- 宣言している箇所、
使用している箇所などクラスやインターフェイスを示しているコンテキスト上でコマンドを実行します。 - 「Usages」:そのクラスやインターフェイスの使用箇所を検索します。どうも、
このオプションが他の 「Usages ?」 系のオプションのすべてを兼ねるワケではないようです。 - 「Usages of methods」:そのクラスやインターフェイスのメソッドの使用箇所を検索します。
- 「Usages of fields」:そのクラスのフィールドの使用箇所を検索します。
- 「Implementiong classes」:そのクラスやインターフェイスの実装箇所を検索します。
- 「Derived classes」
「Derived interfaces」:そのクラスやインターフェイスの派生クラスを検索します。 - メソッドで検索
- 「Usages」:そのメソッドの使用箇所を検索します。
- 「Overriding methods」:そのメソッドをオーバーライドした箇所を検索します。
- 「Implementing methods」:そのメソッドを実装した箇所を検索します。
- フィールド、
メンバ変数、 引数パラメタ、 ローカル変数で検索 - このタイプの検索では
「Find」 オプションはありません。 - (おまけ)
例外のスロー宣言で検索 - 偶然見つけたのですが、
thorws宣言、 throw文上でコマンドを実行すると図25のようなダイアログが表示されます。 - 「Usages」
とあるのですが、 実行してみても何も検索されませんでした。 - 例外クラスの使用箇所は、
例外クラスに対してクラス検索をかければ済む話なのですが、 何か意図があって、 このコンテキストを用意したのでしょうか……。
「Options」
それと、
次回の予告
ナビゲーションの話がもう少しだけ続きます。