Android Studio最速入門~効率的にコーディングするための使い方

第18回 エディタの話[その10]─ 続・いろいろなナビゲーション+検索

この記事を読むのに必要な時間:およそ 7 分

検索と置換

エディタやIDEなら持っていて当然の検索機能についてです。

一般的なアプリケーションやIDEに使い慣れていると,検索系メニューはメニューバーのトップレベルにありそうと思いがちですが,Android Studioは1階層下で「Edit」メニューに隠れています。これが予想以上に見つけにくいです。

図9 メニューバー「Edit → Find」にある検索・置換メニュー

図9 メニューバー「Edit → Find」にある検索・置換メニュー

エディタ内の検索・置換

Eclipseの「編集 → 検索/置換...」に相当する機能が,次の2つです。

  • 「Edit → Find → Find...」
  • 「Edit → Find → Replace...」

実行するとエディタウィンドウの最上部に検索・置換用のツールバーが表示されます。ツールバーの各機能の意味は表1の通りです。

図10 Find/Replaceツールバー

図10 Find/Replaceツールバー

表1 Find/Replaceツールバーの意味

No.意味
(1)⁠1)'以前に検索した検索ワードや置換ワードの履歴です。この手の機能にしては珍しく,プロジェクトを閉じても履歴が保持されます。
(2)検索ワードの出現箇所に移動します。
(3)検索結果を,この次説明する「Findツールウィンドウ」に表示します。
(4)複数行の検索ワードを入力できるように検索ワード入力エリアを切り替えます。複数行検索ワードの場合,⁠6)の正規表現や(7)単語単位のオプションが使えなくなります。
(5)ONにすると,検索ワードの大文字・小文字を区別して検索します。
(6)ONにすると,検索ワードを正規表現として検索します。
(7)ONにすると,検索ワードを単語として検索します。⁠6)がONの場合,このオプションは設定できなくなります。
(8)この不思議なオプションは,ONにすると置換対象ワードの頭文字が大文字か小文字かによって置換後の文字列に影響を与えます。たとえばmytest Mytest MYTESTという文字列に対してmytestyourtestに置換するとyourtest Yourtest YOURTESTとなります。ちょっと使い道が思いつきません。
(9)ONにすると,エディタの選択範囲のみを置換対象とみなします。
(10)現在の出現箇所を置換ワードで置き換えます。
(11)すべての出現箇所を置換ワードで置き換えます。
(12)現在の出現箇所を置換対象から除外(Exclude)⁠または含め(Include)ます。除外設定された出現箇所は「Replace all」で置換されなくなります(⁠Replace」では置換される)⁠
(13)検索・置換オプションで範囲を「コメントのみ(In Comments Only)⁠リテラルのみ(In Literals Only)⁠のいずれかに指定できます。

見ての通りなので使い方に悩むことは無いと思います。検索はインクリメンタルサーチです。検索ワードをタイプする都度,検索を進めていきます。それと,どうゆうわけか補完(Ctrl+SPACE)が効きます。といっても補完されるのは検索キーワードだけで,正規表現は補完候補に上がりません。

置換の場合,検索ワードにヒットした出現箇所に置換ワードがプレビュー表示されます。特に正規表現を駆使した置換処理に便利です。

図11 正規表現を用いた置換のプレビュー表示

図11 正規表現を用いた置換のプレビュー表示

検索ツールバーからエディタにフォーカスを戻すにはESCキーを押します。

あと,カーソル下にあるキーワードを検索する "Find Word at Caret"という一見便利そうなコマンドがありますが,後述する"Highlight Usages in File"と機能が被っているため,覚えるなら後者のコマンドを覚えた方がいろいろ便利です。

指定したディレクトリ内の検索・置換

エディタ内だけではなく,プロジェクト全体を検索したい場合は,次のコマンドを使います。

  • 「Edit → Find → Find in Path...」
  • 「Edit → Find → Replaces in Path...」

これらは,Eclipseの「検索 → 検索...」に相当しますが,使い方というかインターフェイスはだいぶ異なります。基本的にEclipseもAndroid Studioもお互い似せようと思ってインターフェイスを設計しているわけではありませんが,検索まわりは特に類似性が低いです。そのため,Eclipse移行組はEclipseの事は忘れてAndroid Studioの使い方を覚えた方が習得が早いと思います。

コマンドを実行すると検索と置換,それぞれ専用のダイアログが表示されます。

「Options」の内容は先ほど説明した「エディタ内の検索・置換」と同じで,違いは「Scope」「File name filter」だけです。⁠Scope」は検索範囲,⁠File name filter」は検索対象とするファイルの拡張子を指定します*?のワイルドカードが使え,カンマ,で複数の拡張子を指定できます)⁠

どちらも良くあるテキストエディタに備わっている検索・置換でおなじみの機能なので使い方に悩むことは無いと思います。

ちょっとした引っかけなのですが「Scope」「Directory」で選ぶディレクトリは,プロジェクト内に限定する必要はありません(そんな制限もありません)⁠望めば普通の検索ツールとしても使えます。

図13 "Scope / Directroy"で指定する場所はプロジェクトの外でも良い

図13 

検索を実行して検索結果を表示するのが「Findツールウィンドウ」です。このツールウィンドウはリファクタリングでも登場するので,大まかな使い方を覚えておいたほうが良いです。

図14 ⁠Findツールウィンドウ」

図14 「Findツールウィンドウ」

「Findツールウィンドウ」の左端には2列のツールバーが表示してあります。そのうち左側の列は主に「Findツールウィンドウ」の結果に対する機能が集まっています。

図15 ⁠Findツールウィンドウ」のツールバー(左側)

図15 「Findツールウィンドウ」のツールバー(左側)

左側のツールバーで覚えておいた方がよいアイコンは次の3つです。

Settingsアイコン
「Find in Path」「Replace in Path」ダイアログを再表示します。
後述する「使用箇所の検索」結果も「Findツールウィンドウ」に表示されます。どのような場合でも,Settingsアイコンを押せば設定ダイアログが表示されるワケでは無さそうです。検索した方法によってはSettingsアイコンを押しても何も起きません。
Rerunアイコン
現在の条件で再度検索を実行します(検索結果の更新)⁠
Export to Text Fileアイコン
検索結果をテキストファイルに書き出します。
いったん図16のようなプレビューが表示されるので,ファイルに書き出さずクリップボードにコピーすることもできます(⁠Copy」ボタンを押す)⁠

図16 ⁠Export Preview」ダイアログ

図16 「Export Preview」ダイアログ

それと以下のように検索結果に移動するアイコンと「Navigate」メニューのコマンドが関連しています。

  • Previous Occurrence:前の出現箇所へ移動
    • 「Navigate → Previous Occurrence」と同等。
  • Next Occurrence:次の出現箇所へ移動
    • 「Navigate → Next Occurrence」と同等。

このコマンドは「Navigate」メニューにも属しているため,エディタにフォーカスが移っていてもショートカットキーが有効です。

右側のツールバーには主に検索結果の表示方法に関する機能が集まっています。アイコンはトグルになっており,どれも押してみれば効果が分かりますので,各自お好みの表示設定を探してみると良いです(筆者はすべて有効にしています)⁠

図17 ⁠Findツールウィンドウ」のツールバー(右側)

図17 「Findツールウィンドウ」のツールバー(右側)

「Hierarchyツールウィンドウ」と同様に「Findツールウィンドウ」でも"Quick Definition"や"Quick Documentation"が使えますが,⁠Preview Usages」アイコンをONにしてプレビューを使ったほうが便利です(それらのQuick系コマンドはプレビュー内でも利用できます)⁠

図18 プレビュー内でも"Quick Documentation"が利用できる

図18 プレビュー内でも

置換コマンドなのですが,ダイアログのボタンには置換なのに「Find」と書かれているし,迂闊に実行したら一括置換されてしまうのではないか?と身構えてしまうかも知れません。実行すると図19のように確認ダイアログが表示されますので,ご安心ください。

図19 "Replace in Path"実行後にでてくる置換確認ダイアログ

図19 

 検索結果が1つでも必ず確認ダイアログが表示されます。

著者プロフィール

今井勝信(いまいまさのぶ)

システムエンジニア。日本ユニシス株式会社所属。仙台在住。

Android開発はまったくやったことがないけれどIntelliJ IDEAが大好き。

Twitter: @masanobuimai

コメント

コメントの記入