Search Cobb
Search Cobb はページ内検索を行うための Chrome 用拡張であり、以下のような特徴があります。
- 正規表現を用いた検索ができます。この際、
- 複数の要素をまたいだ範囲を検索できます
- 書記素クラスタを正確に識別します
- migemo を用いた検索ができます
- ダイアクリティカルマークの有無、合成文字、囲み文字、組み文字、漢字の新旧字体などについて広く包摂します
- 検索文字列を emacs に寄せたキーバインドで入力・編集できるため、ホームポジションを崩さずにすみます
スクリーンショット
複数の要素をまたぐ検索ができない拡張との対比
画像の例では、「バームクーヘン」が em 要素で括られています。 正規表現でページ検索できることを謳っている拡張は、要素の内外を区別なくまとめて検索できるものとできないものに大別されます。もちろん、Search Cobb はできる側の拡張に属します。

migemo 検索
ローマ字に対応する日本語を検索できます。migemo 関連のライブラリは jsmigemo を使用しています。

ダイアクリティカルマークつきのアルファベットを基底の文字で検索
結合文字列、合成済み文字の両方を包摂して検索できます

アクセント文字以外のレアな合成文字も同様に包摂します

漢字の検索
日本語圏で使用される漢字における常用漢字表、および人名漢字表に収録された字体とその旧字体を包摂します

インストール
Chrome Web Store からのインストール
Chrome Web Store からインストールできます。
Github リポジトリからのインストール
Search Cobb のリポジトリ をクローンし、chrome://extensions の開発者モードで src ディレクトリを読み込んでください。Chrome Web Store で公開されている拡張と機能の差異はありません。ソースコードに進展があった場合にリポジトリの方が早く反映されるかもしれません。
ショートカットキーの使用宣言
Search Cobb をキーボードだけで操作できるようにするために、まず使用するショートカットを明示的に宣言する必要があります。
chrome://extensions のショートカットキー設定画面で Search Cobb に対するショートカットを宣言してください。少なくとも検索パネルを開くショートカットと Ctrl+N (履歴を進めるショートカット) が必要です。

このうち Ctrl+N、Ctrl+T、Ctrl+Shift+N は少し特殊です。これらのキーストロークは本来 Chrome が予約しており、web ページが受け取ることはできません。ただし、拡張は上の画像のように受け取れます。Search Cobb では受け取ったこの予約キーストロークを直接使用するのではなく、エミュレートされたキーボードイベントを通してアクティブな web ページに配信する再配信メカニズムを挟んでいます。これにより、予約されたキーストロークを web ページに実質的に解放することができます。つまり、web ページ自身や他の拡張もこの予約ストロークを通常のストロークと同様に受け取れるようになります。
この再配信メカニズムは Search Cobb とは独立した機能であり、検索パネルを出していない状態でも有効です。もしかしたら注意が必要な点: キーストロークごとに生成されるイベントオブジェクトの isTrusted プロパティはそれが Chrome 自身が生成したイベントではないため false になっています。キー入力に関して isTrusted を正確に見ている web ページや拡張においては再配信がうまく働かないかもしれません。
使い方
検索パネルの呼び出し
宣言したショートカットを入力するか、アイコンをクリックすると検索パネルが表示されます。このとき、検索用のインデックスを作成する処理がまず実行され、その進捗がプログレスバーとしてパネル最上部に表示されます。プログレスバーが右端に達して緑色になるまで待ってください。
検索モードの切り替え
通常、入力したテキストは javascript の正規表現として扱われますが、以下の特別なメタ文字列をテキストに含めることで検索モードを制御することができます。\L と \M は排他であり、複数入力した場合はテキストの末尾に近いものが優先されます。
\Lリテラルモードにします。正規表現のすべてのメタ文字は無効化されます\Mmigemo モードにします\C包摂を無効にします。入力したテキストに正確に合致するものだけを検索します
これらのメタ文字列は直接入力する他、Alt+L、Alt+M、Alt+C を押すことでも切り替えられます。
キーバインド
検索文字列を入力する際、以下のキーバインドが有効です。
| キー | 働き |
|---|---|
| Ctrl+A | キャレットをテキストの先頭に移動します |
| Ctrl+E | キャレットをテキストの末尾に移動します |
| Ctrl+B | キャレットを1文字戻します |
| Ctrl+C | ハイライトされた検索結果のうち、現在アクティブなものの内容をクリップボードへコピーします |
| Ctrl+F | キャレットを1文字進めます |
| Ctrl+O | ハイライトされた検索結果のうち、現在アクティブなものがハイパーリンクであった場合にそのリンクをクリックします |
| Ctrl+P | 履歴を1つ戻します |
| Ctrl+N | 履歴を1つ進めます。このキーバインドを有効にするには、chrome://extensions で Search Cobb 用のショートカットを宣言する必要があります |
| Ctrl+H | キャレットの前の1文字を削除します |
| Ctrl+W | キャレットの前の1単語を削除します |
| Ctrl+U | テキストの先頭からキャレットの前までを削除します |
| Ctrl+K | キャレットからテキストの末尾までを削除します |
| Ctrl+/ | テキストをすべて選択します |
| Ctrl+M | Enter と同じです |
| Ctrl+[ | Escape と同じです |
| Alt+B | キャレットを1単語戻します |
| Alt+F | キャレットを1単語進めます |
| Alt+L | \L を入力し、検索モードをリテラルにします |
| Alt+M | \M を入力し、検索モードを migemo にします |
| Alt+C | \C を入力し、包摂を解除します |
| Enter | 検索文字列を確定します。またはアクティブな検索結果を進めます |
| Shift+Enter | 検索文字列を確定します。またはアクティブな検索結果を戻します |
| Escape | 検索パネルを閉じます |
制限
- 検索結果が 1 文字で、かつ連続している場合、200 文字になるまで 1 つの塊としてまとめられます
- 検索結果が長すぎる場合、200 文字単位で分割されます
- 検索結果の表示は最大 1000 件に制限されます
制限に関する文字数の単位は 1 文字 = 1 書記素クラスタです。
ライセンス
Search Cobb を構成するファイルのうち、src/dict/migemo-compact-dict は SKK-JISYO.L から生成されているため、GPL v2 の下で公開されます。
それ以外の全てのファイルは Apache License, Version 2.0 の下で公開されます。
