PowerShellがデフォルトで読み込むようになったPSReadLineモジュールには、入力テキストを選択する機能が用意されている。テキスト選択は「Shift」キーを押しながら左右のカーソルキーを押すというのがWindowsにおける基本的な方法だが、PSReadLineモジュールではさらにいくつかの単位で選択する方法を提供している。それらのショートカットキーを覚えておくと、入力したコマンドの編集などをより素早く行うことができる。ちょっとしたテクニックではあるのが、身に付けておいて損はないので今回紹介したい。

行全体を選択

たぶん最も有益な選択方法であり、かつ、PowerShellのみならず多くのアプリケーションで共通して使える選択方法が全文選択だ。PSReadLineモジュールでもほかのアプリケーションと同じように「Ctrl」+「A」で全体選択を行うことができる。PSReadLineの場合の全体選択は行全体の選択となる。

「Ctrl」+「A」を押す

行全体が選択される

手癖として打ちやすいのは「Ctrl」+「A」、「Ctrl」+「C」または「Ctrl」+「A」、「Backspace」といったところではないだろうか。行全体をコピー、または、行全体を削除する処理だ。「Ctrl」+「A」はテキストを扱う多くのアプリケーションで全文選択に設定されていることが多いので、意識せずともすでにPowerShellで使っている方も多いと思う。

1文ずつ選択

PSReadLineでテキストを選択を1文字ずつ行う方法も、ほかのアプリケーションと同じだ。「Shift」キーを押しながら「→」キーを押せばテキスト選択が1文字右へ広がるし、「Shift」キーを押しながら「←」キーを押せばテキスト選択が1文字左へ狭まる。

例えば、次のように何もテキスト選択が行われていない状態で「Shift」+「→」を押す。

「Shift」+「→」を押す

そうすると次のように1文字分が選択される。そのまま続けて「Shift」+「→」を押す。

「Shift」+「→」を押す

さらに右の文字が選択の対象となり、2文字が選択された状態になる。

今度はここでShift-←を押す。

「Shift」+「←」を押す

すると次のように先程選択した文字が選択が外れ、1文字だけが選択された状態にある。

1文字だけが選択された状態に戻る

「Shift」+「→」と「Shift」+「←」はカーソルキーを移動させ、移動に伴ってテキスト選択の範囲を広げたり狭めたりする処理となる。もっとも基本的な選択処理で、PSReadLineのみならず多くのWindowsアプリケーションで同じ操作ができる。この操作も「Ctrl」+「A」と同様、意識することなくすでにPowerShellで使っている方も多いんじゃないかと思う。

1単語ずつ選択

カーソルの移動が単語単位でできるように、テキスト選択も1文字単位ではなく、1単語単位で行うことができる。実際にはPowerShellでは1文字ごと選択するよりも1単語ごとの選択範囲変更のほうが効率が良いことが多いだろう。

次の状態で「Shift」+「Ctrl」+「→」を押す。

「Shift」+「Ctrl」+「→」を押す

すると次のように1単語分が選択される。

この状態でさらに「Shift」+「Ctrl」+「→」を押す。

「Shift」+「Ctrl」+「→」を押す

今度は次のように2単語分が選択された状態になる。

今度はここで「Shift」+「Ctrl」+「←」を押す。

Shift-Ctrl-←

次のように先程選択された単語が選択対象から外れる。

1単語が選択対象から外れた

単語単位でのカーソルの移動は「Ctrl」+「←」および「Ctrl」+「→」だった。これに「Shift」キーを加えた「Shift」+「Ctrl」+「←」および「Shift」+「Ctrl」+「→」が単語単位でのテキスト選択だ。移動と選択で共有しているので覚えやすい。「Shift」キーを使うのであれば選択で、使わなければ移動だ。

行頭、行末まで選択

「Home」キーと「End」キーで行頭および行末までカーソルを移動させることができることを以前取り上げている。ということは、当然だがカーソルのある位置から行頭までまとめて選択する方法、カーソルから行末までまとめて選択する方法も用意されている。

次の状態でShift-Homeを押す。

「Shift」+「Home」を押す

次のようにカーソルから行頭までが選択される。

今度はこの状態で「Shift」+「End」を押す。

「Shift」+「End」を押す

選択の対象が行末まで移動するため、もともとカーソルがあった場所から行末までが選択の対象になる。

もともとカーソルがあった場所から行末までが選択される

「Shift」+「Home」と「Shift」+「End」を使ったテキスト選択は結構使える。カーソルのある場所から行末までを削除したいとか、逆にカーソルのある場所から行頭までを削除したい、といったようなケースがあるからだ。この方法も覚えておいて損はないし、動作がHomeおよびEndのそれと同じなので覚えやすい。Shiftをつければ選択で、そうでなければ移動するだけだ。

ショートカットキーは規則性を考えると覚えやすい

ショートカットキーは便利で時短および高効率作業には欠かすことができない。しかし、アプリケーションごとに微妙にショートカットキーは異なっているし、これにOSのショートカットキーが加わったりすると、覚えなければならないショートカットキーの数は膨大になってくる。努力次第と言ってしまえばそれまでだが、なにか覚えるためのコツのようなものは必要だ。

最も簡単なのは修飾キーの意味や特殊キーの意味を覚えておくことだ。例えば「Shift」キーは文字通り「シフト」させる目的で使われる。選択の場合は本来の「Shift」キーの「シフト」とは意味が異なるのだが、都合良く「選択範囲を『シフト』させるキー」と考えてしまえばよい。「Home」キーと「End」キーはいろんなアプリケーションで先頭および末尾への移動になっていることが多いので、これに「Shift」キーを組み合わせれば自ずとどんな動作をするかが見えてくる。

後は配置だ。「なぜそのキーに(このショートカットを)割り当ててあるのか」がわからないことは多々あるのだが、そうした場合には対になる操作のキーが左右に配置されていたりするケースもある。そういう「規則」を覚えておくと、使うときにちょっと考えると思い出せるので便利だ。ショートカットキーが操作効率を向上させてくれるのは間違いない。ぜひ身に付けていこう。

付録: PSReadLineショートカットキー一覧

キー 機能
Enter 入力行を実行しカーソルを次の行へ移動。入力が閉じていない場合には入力行を実行せずにカーソルを次の行へ移動
Shift-Enter 入力行を実行せずにカーソルを次の行へ移動
Ctrl-Enter 入力行を実行せずに前の行に空行を挿入
Ctrl-Shift-Enter 入力行を実行せずに次の行に空行を挿入
Backspace カーソルよりひとつ前の文字を削除
Ctrl-h カーソルよりひとつ前の文字を削除
Delete カーソル下の文字を削除
Ctrl-Home カーソルから行頭までを削除
Ctrl-End カーソルから行末までを削除
Ctrl-Backspace カーソルから単語の先頭までを削除
Ctrl-w カーソルから単語の先頭までを削除
Ctrl-Delete カーソルから単語の末尾までを削除
Alt-d カーソルから単語の末尾までを削除
Ctrl-v システムクリップボードのテキストを貼り付け
Shift-Insert システムクリップボードのテキストを貼り付け
Ctrl-Shift-c 選択したテキストをシステムクリップボードへコピー
Ctrl-c 選択したテキストをシステムクリップボードへコピー。テキストが選択されていなかった場合には行の編集をキャンセル
Ctrl-x 選択したテキストを削除
Ctrl-z アンドゥ
Ctrl-y リドゥ
ESC すべてアンドゥ
Alt-. 直前実行の最後の引数を貼り付け
キー 機能
カーソルを左へ移動
カーソルを右へ移動
Ctrl-← カーソルを左の単語の先頭へ移動
Ctrl-→ カーソルを右の単語の先頭へ移動
Home カーソルを行頭へ移動
End カーソルを行末へ移動
Ctrl-] カーソルを対応するカッコへ移動
キー 機能
コマンド履歴のひとつ前のコマンドへ入れ替え
コマンド履歴のひとつ後のコマンドへ入れ替え
F8 コマンド履歴検索(古い履歴へ向かって)
Shift-F8 コマンド履歴検索(新しい履歴へ向かって)
Ctrl-r コマンド履歴検索(古い履歴へ向かってインタラクティブに検索)
Ctrl-s コマンド履歴検索(新しい履歴へ向かってインタラクティブに検索)
Alt-F7 コマンド履歴をクリア
キー 機能
Ctrl-@ 補完。補完対象が複数ある場合にはメニュー形式で候補を表示
Ctrl-Space 補完。補完対象が複数ある場合にはメニュー形式で候補を表示
Tab 補完。次の補完候補を表示
Shift-Tab 補完。前の補完候補を表示
キー 機能
Ctrl-a 行全部を選択し、カーソルを行末へ移動
Shift-← カーソルの選択位置をひとつ左へ移動
Shift-→ カーソルの選択位置をひとつ右へ移動
Shift-Home カーソルから行頭までを選択
Shift-End カーソルから行末までを選択
Shift-Ctrl-← カーソルからひとつ前の単語の先頭までを選択
Shift-Ctrl-→ カーソルからひとつ後の単語の先頭までを選択
キー 機能
F3 指定した文字へカーソルを後ろへ移動
Shift-F3 指定した文字へカーソルを前へ移動
キー 機能
Ctrl-l スクリーンのクリアと再描画およびカレント行をスクリーン上部へ移動
Alt— 数値を0回繰り返し入力
Alt-0 数値を0回繰り返し入力
Alt-1 数値を1回繰り返し入力。または追加指定した分繰り返し入力
Alt-2 数値を2回繰り返し入力。または追加指定した分繰り返し入力
Alt-3 数値を3回繰り返し入力。または追加指定した分繰り返し入力
Alt-4 数値を4回繰り返し入力。または追加指定した分繰り返し入力
Alt-5 数値を5回繰り返し入力。または追加指定した分繰り返し入力
Alt-6 数値を6回繰り返し入力。または追加指定した分繰り返し入力
Alt-7 数値を7回繰り返し入力。または追加指定した分繰り返し入力
Alt-8 数値を8回繰り返し入力。または追加指定した分繰り返し入力
Alt-9 数値を9回繰り返し入力。または追加指定した分繰り返し入力
PageDown スクリーンを1画面分下へスクロール
PageUp スクリーンを1画面分上へスクロール
Ctrl-PageDown スクリーンを1行分下へスクロール
Ctrl-PageUp スクリーンを1行分上へスクロール
Alt-? キーに割り当てられている機能を表示(指定したキー)
Ctrl-Alt-? キーに割り当てられている機能を表示(すべて)

付録: $PROFILE

本連載時点での$PROFILEを次に掲載しておく。