English / 日本語
目次
本機能拡張は VSCode の Selection(選択)メニューにある以下のコマンドと同等の機能を提供します。そして、Case Sensitive(大文字と小文字を区別する)などの検索オプションを独立して保持します。
Add Next Occurrence /「次の出現箇所を追加」Add Previous Occurrence /「前の出現箇所を追加」Select All Occurrences /「すべての出現箇所を選択」デフォルトの設定では大文字と小文字を区別し、ワード境界を自動判定して次の “Occurrence(出現箇所)” を選択します。
VSCode 標準の Add Next Occurrence , Add Previous Occurrence , Select All Occurrences は通常のテキスト検索機能のオプションを参照して検索を行います。
例えば Add Next Occurrence を実行すると、前回テキスト検索を行った時の Case Sensitive(大文字と小文字を区別する)設定や March whole word(単語単位で検索する)設定に基づいて次の “Occurrences(出現箇所)” が選択されます。
前回のテキスト検索に必要だった検索オプションが次の Add Next Occurrence の時に必要なオプションと一致するとは限りません。しかも Add Next Occurrence を実行するときはそのオプションを変更出来ません。一度テキスト検索を行い適切なオプションに設定し直す必要があります。
Add Next Occurrence による選択範囲の追加は、変数名や関数名の書き換えを行う目的で使うことが多いため、ほとんどのケースで厳密なマッチを必要とするでしょう(item と言う変数名を変更するとき processItems() の Item まで書き換えたいケースは希でしょう)。
つまり、この機能拡張はそれらの設定を通常のテキスト検索の検索オプションと独立させるために作られた機能拡張です。
本機能拡張はワード境界の自動判定機能が備わっており、デフォルトで「自動判定する」設定になっています。
ワード境界の自動判定とは、選択した文字列が非英数字1に囲われているとき、自動的にそのテキストを独立したワードと見做し、同様に非英数字に囲われたワードを次の “Occurrence(出現箇所)” 対象として選択する機能です。
例: ワード境界が自動的に設定されるケース
const item = "MyItem";
const resultItem = pickFromItems( [item] );
このコードで最初に登場する item は非英数字に囲まれているため独立したワードとして扱われます。この item を選択して ExactOccurrenceSelector: Select all occurrences し name に書き換えると以下の様になります。
const name = "MyItem";
const resultItem = pickFromItems( [name] );
例: ワード境界無しと判定されるケース
次に "MyItem" の Item を選択して Name に書き換えた場合、Item は独立したワードではないので、以下の様に resultItem も pickFromItems も書き換え対象になります。
const name = "MyName";
const resultName = pickFromNames( [name] );
これらの挙動が気に入らない場合はコンフィグの Boundary Handling を never に設定してください。ワード境界に関する判定を無視する様になります。
逆に Boundary Handling コンフィグに always を指定すると、例えば先ほどの "MyItem" の Item も独立したワードと見做され resultItem も pickFromItems も書き換え対象とならなくなります。
コマンドパレットから以下のコマンドで実行する事ができます。
ExactOccurrenceSelector: Add Next OccurrenceExactOccurrenceSelector: Add Previous OccurrenceExactOccurrenceSelector: Select All OccurrencesVSCode 組み込みの Add next occurrence の代わりに使用するのであればショートカットキーの差し替えを行って下さい。
VSCode 標準の Add next occurrence のショートカット(Win: ctrl + D / mac: cmd + D)を置き換える場合、以下の手順で置き換えられます。
ctrl + k,ctrl + s / mac:cmd+k,cmd+s)を開くAdd Selection To Next Find Match または editor.action.addSelectionToNextFindMatch と入力し、既存の設定を検索するRemove Keybinding で削除するExactOccurrenceSelector: Add Next Occurrence のショートカットを設定する
exact-occurrence-selector.addNextOccurrence または ExactOccurrenceSelector: Add next occurrence を入力するctrl + D / macOS cmd + D を入力するChange When Expression を選び editorFocus と入力する(オプション)デフォルトのキーバインドを変更しない場合、 2 番をスキップし、3 番の工程で好きなキーバインドを設定してください。
ExactOccurrenceSelector: Add next occurrenceコマンドID: exact-occurrence-selector.addNextOccurrence
VSCode 標準の Add next occurrence に相当する機能を提供します。
ExactOccurrenceSelector: Add previous occurrenceコマンドID: exact-occurrence-selector.addPreviousOccurrence
VSCode 標準の Add previous occurrence に相当する機能を提供します。
ExactOccurrenceSelector: Select all occurrencesコマンドID: exact-occurrence-selector.selectAllOccurrences
VSCode 標準の Select all occurrences に相当する機能を提供します。
ExactOccurrenceSelector: Change boundary handling configコマンドID: exact-occurrence-selector.changeBoundaryHandlingConfig
コマンドパレットから Boundary Handling コンフィグを変更する為のコマンドです。
コマンドパレットで exact config などと入力すれば素早くアクセスしてコンフィグを変更する事ができます。
ExactOccurrenceSelector: Change case sensitivity configコマンドID: exact-occurrence-selector.changeCaseSensitiveConfig
コマンドパレットから Case Sensitive コンフィグを変更する為のコマンドです。
コマンドパレットで exact config などと入力すれば素早くアクセスしてコンフィグを変更する事ができます。
コンフィグID: exactOccurrenceSelector.caseSensitive
大文字小文字の区別を行うかどうかの設定です。デフォルトは true で区別します。
コンフィグID: exactOccurrenceSelector.boundaryHandling
ワード境界の扱い方に関する設定です。デフォルトは auto です。
auto: 選択テキストの両端が非英数字である時、独立したワードと見做して次の「出現箇所」を探します。always: 選択テキストを必ず独立したワードと見做して次の「出現箇所」を探します。never: ワード境界を無視します。Cinfig ID: exactOccurrenceSelector.showNumOfOccurrences
本機能拡張により選択された “Occurrence(出現箇所)” の数をステータスバーに表示刷るかどうかのチェックボックスです。
デフォルトは ON です。
この拡張機能に関するバグの報告や要望がある場合は、GitHub の Issue ページを通じてご連絡ください。
ここで言う英数字には _ を含みます。また行頭行末も非英数字扱いとなります。 ↩