検索

文章を書くためにMarkdownを使うことの大きな利点として、オペレーティングシステムに内蔵された検索システム(Windowsのコルタナ、macOSのSpotlight、LinuxのDashなど)を使って検索可能であることが挙げられます。しかし、プログラムを離れずに何かを探すことができれば大変便利です。そこで、検索機能の出番です。Zettlrには、基本的に3つに区別される検索機能があります。左側のリストで異なるディレクトリを選択するたびに動作する高速フィルタリング機能、文書内検索、それから、グローバル検索です。

ファイルのフィルタリング

一つ目の機能については、すでに色々なところで述べています。プレビューリストには、現在のディレクトリと、そのサブディレクトリに含まれるファイルのみが表示されます。異なるディレクトリを選択して絞り込んでいくと、すべてのファイルが表示されている状態から、見たいファイルだけが表示された状態にすることができます。あるいは、ルートディレクトリを選択すれば、すべてのファイルを一覧することができます。

ファイル内検索

現在開いているファイル内で、特定の語句や単語を検索したい場合は、Cmd/Ctrl+Fを押します。虫メガネアイコンのすぐ下に、小さなポップアップが表示され、検索と置換を行うことができます。何かを入力してから、Enterを押すたびに見つけた箇所に移動します。ESCを押すか、ポップアップ外をクリックすると検索を終了します。

ヒント: 強力な正規表現を使って検索することもできます。Zettlrはデフォルトでは、普通の検索を行いますが、正規表現を検出すると(検索文字列が半角スラッシュで囲まれていると)、正規表現検索を行います。Zettlrは正規表現を検出すると、入力しやすいように検索文字列の表示を等幅フォントに変更します。例えば、すべての数字を検索したい場合は、/\d+/を検索します。JavaScriptの正規表現について、さらに知りたい場合はこちら。

置換の入力欄でEnterを押すと、Zettlrは、現在の検索結果を置換し、次に検索結果が現れる場所を自動的にハイライトします。繰り返しEnterを押していくと、複数の個所を置換することができます。すべての検索結果を一度に置換したい場合は、置換の入力欄でAlt+Enterを押してください。

ヒント: 他のエディタと同様に、正規表現検索では変数を利用することができます。一つ以上のキャプチャグループを含む正規表現で検索した場合、置換文字列中で$1といった変数を使うことができます。このような変数は、実際にマッチしたキャプチャグループの文字列で置き換えられます。変数を複数使った場合も、同様に置換されます。$の後の数字は、キャプチャグループのインデックスに対応しています(2番目のキャプチャグループは$2、などとなります。)JavaScriptの正規表現について、さらに知りたい場合はこちら。

もちろん、Quicklookウィンドウでも検索を行うことができます。検索したいQuicklookをクリックしてからCmd/Ctrl+Fを押してください。(クリックしてフォーカスを移動しておかないと、メインウィンドウでの検索になってしまいます。)

グローバル検索

実は、最も重要な検索はグローバル検索です。これは、Cmd/Ctrl+Shift+Fで開始することができます。ツールバーの検索欄にフォーカスが移動し、ルートディレクトリ以下のファイルの内、現在のペインに表示されているファイルを対象に検索を行うことができます。つまり、適切なディレクトリを選択することで(フィルタリング機能を利用してください)、どのファイルを検索対象とするかを決定することができます。

すべてのファイルを同時に検索したい場合は、ルートディレクトリを選択してください。特定のディレクトリのみを検索したい場合は、検索前に選択しておいてください。ほとんどの場合は、探している文章がどこにあるかわかっていると思います。例えば、科学研究で引用されている可能性のある特定の問題について検索する場合、すべての考えやアイディアに対して検索するのではなく、科学関連のテキストの抜粋や論文を保存しているディレクトリに限定して検索することができます。

検索は非常に強力な機能です。検索したいものを正確に指し示すために、いくつかの演算子を使用することができます:

  • AND演算子: Boat Shipと検索すると、"boat"と"ship"の両方を含むファイルのみが表示されます。半角スペースが"AND"と解釈されます。
  • OR演算子: Boat | Shipと検索すると検索すると、"boat"と"ship"のいずれかを含むファイルが、すべて表示されます。
  • 完全一致演算子: "Boat Ship"と検索すると、これに完全一致する文字列を含むファイルを検索します。

もちろん、これらの演算子を組み合わせて使うこともできます。"Boat Ship" | vessel captainと検索すると、"Boat Ship"または"vessel"を含み、加えて"captain"も含むファイルを検索します。

検索する単語が一部しか思い出せない場合でもご安心ください。Zettlrは、検索文字列を単語の一部に含むものも見つけようとします。つまり、"trooper"を検索すると、"Stormtrooper"や"Troopership"にもマッチします。"Boat Ship"は"Steamboat Ship"にもマッチします。また、検索は大文字小文字を無視します。そのため、ちょっとした入力ミスの存在を気にする必要はありません。

Zettlrは検索中、検索欄の右に検索インジケーターを表示します。それが完了すると、すべてのファイルに色が付きます。より明るい緑色であるほど、より関連したファイル(つまり、より高品質の関連情報がファイルに存在する)となります。これは、一種の検索結果のヒートマップであり、検索結果中の関連性の高いファイルを簡単に見分けることができます。

Zettlrは、検索文字列をまったく含まないファイルは表示しません。ディレクトリも同様です。

より良い結果を得るため、Zettlrは、それぞれの検索の種類ごとに重み付けをしています。例えば、タイトル中に完全一致する文字列を含んでいるなら、そのファイルは非常に関連性が高いことを示していると思われます。したがって、Zettlrは、これを他の一致よりも重視します。同様に、検索結果の大文字小文字が不一致のものよりも、一致しているものに高い点数を付けます。

検索に一致した正確な場所を見つけるには、ファイルを選択してください。すると、自動的にすべての一致箇所が明るい黄色でハイライトされ、簡単に見つけることができます。また、ウィンドウの一番右のスクロールバーにも、文書中の検索結果の位置を示すマーカーが表示されます。

グローバル検索を終了する

他の操作を行っても、ほとんどの場合グローバル検索は終了しません。これにより、意図せず検索が終了してしまうことを心配しないで、検索結果を見て回ることができます。これは特に、検索に時間がかかるような巨大なファイルリストの場合に役に立ちます。とはいえ、グローバル検索を終了する方法も存在します。

以下のいずれかで、検索を終了し、元のようにすべてのファイルを表示します:

  • 検索欄にフォーカスした状態でESCを押す。(Cmd/Ctrl+Shift+Fで、再度フォーカスできます。)
  • 検索欄の右端のxをクリックする。
  • ツリービューで他のディレクトリを選択する。