UNIX系のインタラクティブシェルは、シェルを操作するための機能にショートカットキーを設定できるようになっている。シェルごとに設定できる内容は異なるが、シェルの提供している機能の多くをショートカットキーに割り当てて利用できると考えてよい。それに比べると、PowerShellが提供しているインタラクティブ機能はかなり少ないのだが、それでもいくつかのショートカットキーは最初から用意されている。今回は、この辺りの機能を紹介しよう。

カーソル移動 「Home」「End」「Ctrl」+「←」「Ctrl」+「→」

カーソルの移動は当然「←」「→」で1文字分ずつ行えるが、もう少し大きな単位で移動する方法も用意されている。まず、行の先頭に移動するショートカットキーとして「Home」キーが、行の末尾に移動するショートカットキーとして「End」キーが設定されている。これはPowerShellに限らず、多くのアプリケーションで採用されているショートカットキーだ。

「Home」キーでカーソルを行頭へ移動

「End」キーでカーソルを行末へ移動

行頭へ移動するショートカットキーとしては「Ctrl」+「A」、行末へ移動するショートカットキーとして「Ctrl」+「E」が使われることも多い。しかし、PowerShellではこれらのショートカットキーは使うことができない。「Home」キーと「End」キーを使おう。特に「Home」キーは意外と使うことが多いので、覚えておくとよいと思う。

次は単語単位での移動だ。カーソルの移動としてはこのショートカットを覚えておくとよい。それは「Ctrl」+「←」と「Ctrl」+「→」だ。「Ctrl」+「←」で前の単語へ移動し、「Ctrl」+「→」で後ろの単語へ移動する。ショートカットキーは直感的でわかりやすいし、覚えやすい。次のスクリーンショットをご覧いただきたい。

「Ctrl」+「←」で1つ前の単語へ移動

「Ctrl」+「←」で1つ前の単語へ移動

「Ctrl」+「←」で1つ前の単語へ移動

また、「Ctrl」+「→」で1つ後ろの単語へ移動していく。

「Ctrl」+「→」で1つ後ろの単語へ移動する

「Ctrl」+「→」で1つ後ろの単語へ移動する

「Ctrl」+「←」と「Ctrl」+「→」を単語間の移動ショートカットに設定しているアプリケーションやシェルは多いので、この操作は覚えておくと良いだろう。コマンドやコマンドレットを入力していて、一部のパラメータが間違っているとか、その引数が違っているというのはよくあることだ。その場合、単語単位でカーソル移動する方法を知っていると、作業を素早く行える。知っていると、かなり作業効率が上がるのだ。

単語の削除 「Ctrl」+「Backspace」「Ctrl」+「Del」

単語間の移動と似たような感じで、単語を削除するショートカットキーも用意されている。「Ctrl」+「Backspace」と「Ctrl」+「Del」だ。「Ctrl」+「Backspace」でカーソルから前の単語を削除し、「Ctrl」+「Del」でカーソルの後ろの単語を削除する。バックスペースと「Del」キーがそのまま「←」および「→」方向の文字の削除だから、「Ctrl」を付けることで削除の単位が単語単位になると覚えておくとよいだろう。

削除範囲は、「Ctrl」+「←」と「Ctrl」+「→」で移動した部分が対象だと考えるとわかりやすい。次の動作例をご覧いただきたい。

「Ctrl」+「Backspace」または「Ctrl」+「W」で1つ前の単語を削除

「Ctrl」+「Backspace」または「Ctrl」+「W」で1つ前の単語を削除

「Ctrl」+「Backspace」または「Ctrl」+「W」で1つ前の単語を削除

入力しているときは右側から削除していくことが多いので、「Ctrl」+「Backspace」または「Ctrl」+「W」は結構使いやすい。「Ctrl」+「Del」で逆方向に削除できる。次のような感じだ。

「Ctrl」+「Backspace」で1つ後の単語を削除

「Ctrl」+「Backspace」で1つ後の単語を削除

「Ctrl」+「Backspace」で1つ後の単語を削除

「Home」キーで行頭に移動してから単語単位で削除したり、「Ctrl」+「→」で該当する単語の先頭に移動して「Ctrl」+「Del」で単語ごと削除したりといった使い方をする。行頭に近い単語を削除する場合には、こちらのほうが素早く操作できるだろう。

なお、「Ctrl」+「Backspace」は「Ctrl」+「W」でも機能する。バックスペース方向の単語を削除する設定を「Ctrl」+「W」に設定しているアプリケーションやシェルも多いので、「Ctrl」+「W」で覚えておいても悪くはない。

「←」や「→」、「Backspace」キーを連打していないか?

PowerShellを操作していてコマンドやコマンドレット入力、または過去に入力したコマンドを編集している最中に、「←」や「→」を連打してカーソルを移動していることに気がついたら、ちょっと立ち止まってみてほしい。その作業は「Ctrl」+「←」や「Ctrl」+「→」に置き換えることができないだろうか。もし可能なら、そのほうが操作が早くなる。

これは「Backspace」キーや「Del」キーを連打している場合も同様だ。日本語は分かち書きをしないので、どうしても単語単位で削除するという概念が希薄なところがある。しかし、コマンドやコマンドレットの入力は分かち書きなのだ。「単語ごとに削除する」という操作がとても自然であり、効率が良い。

似たようなコマンドラインを少しだけ編集して実行する、という作業を繰り返す際には、今回紹介した「Ctrl」+「←」と「Ctrl」+「→」での移動、「Ctrl」+「Backspace」と「Ctrl」+「Del」で単語ごとの削除、というショートカット操作がまさに力を発揮する。これを知っていると知らないのとでは、作業効率が大きく変わる。些細なことだが、ぜひとも試してみてほしい。