PowerShell コマンドの履歴・検索を知ることで、VSCode 開発も捗りますよ

# 背景
Windows 上で TypeScript を利用する事になった。
で、開発環境となると、やっぱり Visual Studio Code が便利そうってことで使う事にした。

当初は、Windows Terminal で コマンドプロンプト / PowerShell を切り替えつつとか思ってたけど、
Visual Studio Code の Terminal でそのまま PowerShell を使う方が便利と相成った。

で、そうすると、PowerShell を便利に使う方法を知っておく必要があるよねってお話

# 今よく使うやつ
## ⇅ カーソルキー上下による履歴移動
history コマンドで、番号指定してっていう流れもあるけど、直前の何個かのコマンドならこれが楽
![上下で履歴移動.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/149fc01d-30c2-59c1-7d7d-41b6f6344b76.gif)

## CTRL + R: Back Search
超絶便利な履歴からの検索。
これと、カーソル動かすだけで他の履歴操作は覚える必要ない感覚まである
![逆順検索.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/da96eea3-5217-60ea-ec15-a2f2a432499b.gif)

## TAB / Shift + TAB: 入力補完
パスや、PowerShell コマンド補完に威力を発揮
Node コマンドなんかも補完してはくれるけど、どっちかというとそっちは履歴を使いがち
![入力補完.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/e7d1260a-0eef-fc36-d4d2-57bfa98ab872.gif)

## CTRL + Z / Y: Undo / Redo
Search 中断や、入力内容の修正などに便利
![CTRL+ZY.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/f10a027e-8181-3c1e-f47e-a01c0a82347f.gif)

## →: カーソル右
コマンド入力中に、灰色で背後に出てきた際に、それを選びたいってなったときに使う。
※画像は、そのうち気が向いたら？

# Ctrl+Alt+?    ShowKeyBindings       すべてのキー バインドを表示します
これで使えるコマンドを見て、デスクトップに貼っておくとかいいかもね

```powershell: コマンド一覧
基本的な編集機能
========
Enter            AcceptLine         入力を受け入れるか、入力に終了トークンがない場合は次の行に移動します。
Shift+Enter      AddLine            入力を実行せずにカーソルを次の行に移動します
Backspace        BackwardDeleteChar カーソルの前にある文字を削除します
Ctrl+h           BackwardDeleteChar カーソルの前にある文字を削除します
Ctrl+Home        BackwardDeleteLine カーソル位置から行頭までのテキストを削除します
Ctrl+Backspace   BackwardKillWord   現在の単語または前の単語の先頭からカーソル位置までのテキストをキル リングに移動しま
す
Ctrl+C           Copy               選択された領域をシステムのクリップボードにコピーします。領域が選択されていない場合は、行全体をコピーします。
Ctrl+c           CopyOrCancelLine   選択されたテキストをクリップボードにコピーします。テキストが選択されていない場合は、CancelLine によって行の編集を取り消します。
Ctrl+x           Cut                選択された領域を削除し、削除したテキストをシステムのクリップボードに配置します
Delete           DeleteChar         カーソルの下にある文字を削除します
Ctrl+End         ForwardDeleteLine  カーソル位置から行末までのテキストを削除します
Ctrl+Enter       InsertLineAbove    入力を実行せず、現在の行の上に新しい空白行を挿入します
Shift+Ctrl+Enter InsertLineBelow    入力を実行せず、現在の行の下に新しい空白行を挿入します
Ctrl+Delete      KillWord           カーソル位置から現在の単語または次の単語の末尾までのテキストをキル リングに移動しま
す
Ctrl+v           Paste              システムのクリップボードからテキストを貼り付けます
Shift+Insert     Paste              システムのクリップボードからテキストを貼り付けます
Ctrl+y           Redo               元に戻した操作をやり直します
Escape           RevertLine         すべての編集を元に戻します (履歴からインポートされた行以外の行を消去します)
Ctrl+z           Undo               前の編集を元に戻します
Alt+.            YankLastArg        最後の引数のテキストを入力にコピーします

カーソル移動の機能
=========
LeftArrow       BackwardChar    カーソルを 1 文字前に戻します
Ctrl+LeftArrow  BackwardWord    カーソルを現在の単語または前の単語の先頭に移動します
Home            BeginningOfLine カーソルを行頭に移動します
End             EndOfLine       カーソルを行末に移動します
RightArrow      ForwardChar     カーソルを 1 文字先に進めます
Ctrl+]          GotoBrace       対応するかっこに移動します
Ctrl+RightArrow NextWord        カーソルを次の単語の先頭に移動します

履歴機能
====
Alt+F7    ClearHistory          コマンド ライン履歴 (PowerShell の履歴ではなく) からすべての項目を削除します
Ctrl+s    ForwardSearchHistory  履歴を対話形式で順方向に検索します
F8        HistorySearchBackward 履歴を逆方向に検索して、現在の入力で始まる項目を見つけます。入力が空の場合は、PreviousHistory と同じように動作します
Shift+F8  HistorySearchForward  履歴を順方向に検索して、現在の入力で始まる項目を見つけます。入力が空の場合は、NextHistory と同じように動作します
DownArrow NextHistory           履歴の次の項目で入力を置き換えます
UpArrow   PreviousHistory       履歴の前の項目で入力を置き換えます
Ctrl+r    ReverseSearchHistory  履歴を対話形式で逆方向に検索します

コンプリート機能
========
Ctrl+Space MenuComplete        入力候補が 1 つだけ存在する場合は、その候補で入力を補完します。それ以外の場合は、入力候補のメニューから項目を選択して入力を補完します。
Tab        TabCompleteNext     次の入力候補を使用して入力を補完します
Shift+Tab  TabCompletePrevious 前の入力候補を使用して入力を補完します

その他の機能
======
Ctrl+l        ClearScreen           画面をクリアし、画面の先頭に現在の行を再描画します
Alt+0         DigitArgument         他の関数への数値引数を開始または累算します
Alt+1         DigitArgument         他の関数への数値引数を開始または累算します
Alt+2         DigitArgument         他の関数への数値引数を開始または累算します
Alt+3         DigitArgument         他の関数への数値引数を開始または累算します
Alt+4         DigitArgument         他の関数への数値引数を開始または累算します
Alt+5         DigitArgument         他の関数への数値引数を開始または累算します
Alt+6         DigitArgument         他の関数への数値引数を開始または累算します
Alt+7         DigitArgument         他の関数への数値引数を開始または累算します
Alt+8         DigitArgument         他の関数への数値引数を開始または累算します
Alt+9         DigitArgument         他の関数への数値引数を開始または累算します
Alt+-         DigitArgument         他の関数への数値引数を開始または累算します
PageDown      ScrollDisplayDown     表示を 1 画面分下へスクロールします
Ctrl+PageDown ScrollDisplayDownLine 表示を 1 行分下へスクロールします
PageUp        ScrollDisplayUp       表示を 1 画面分上へスクロールします
Ctrl+PageUp   ScrollDisplayUpLine   表示を 1 行分上へスクロールします
Ctrl+Alt+?    ShowKeyBindings       すべてのキー バインドを表示します
Alt+?         WhatIsKey             次に入力されたコードのキー バインドを表示します

選択機能
====
Ctrl+a                SelectAll           行全体を選択します。カーソルは行末に移動します
Shift+LeftArrow       SelectBackwardChar  現在の選択範囲を調整して、前の文字を選択範囲に含めます
Shift+Home            SelectBackwardsLine 現在の選択範囲を調整して、カーソル位置から行末までを選択範囲に含めます
Shift+Ctrl+LeftArrow  SelectBackwardWord  現在の選択範囲を調整して、前の単語を選択範囲に含めます
Shift+RightArrow      SelectForwardChar   現在の選択範囲を調整して、次の文字を選択範囲に含めます
Shift+End             SelectLine          現在の選択範囲を調整して、カーソル位置から行頭までを選択範囲に含めます
Shift+Ctrl+RightArrow SelectNextWord      現在の選択範囲を調整して、次の単語を選択範囲に含めます

検索機能
====
F3       CharacterSearch         1 文字を読み取り、その文字が次に出現する位置にカーソルを移動します
Shift+F3 CharacterSearchBackward 1 文字を読み取り、その文字が前に出現する位置にカーソルを移動します
```

# あとがき
shell 系触ってた人なら当たり前な機能だったものが、いつの間にか Windows でもこんなに進んでたんだ、とビックリ

今どきの若い子って覚えること多すぎて大変だよね。
っていいつつ、おっさんもそれについていかないといけないのは大変 :p