亀の甲羅2

今日もまた朝とく起きて励まなん窓に明るきありあけの月

powershell Tab補完、Ctrl+Space候補表示

今までpowershell ISEばかりを使用してきた。ISEはコマンドやコマンドの持つオプションを綺麗に表示してくれるので分かりやすかった。powershellの純粋なターミナルの方でも補完機能や候補表示機能がないのかを調べてみた。

目次

本文

1. Tab補完

例えば、以下のように

> Get-Ch <tab押下>
  ↓
> Get-ChildItem

候補が複数ある場合は、順々に候補を表示する(ここがダサい)。

> Get-v <tab押下>
  ↓
> Get-Variable <tab押下>
  ↓
> Get-Verb <tab押下>
  ↓
> Get-VirtualDisk <tab押下>
・・・

2. Ctrl+Space 候補表示

2.1 コマンド

任意の所まで入力して「Ctrl+Space」で候補を表示してくれる。便利なことに簡単な説明も表示される。

f:id:takobose_ht:20210917225412p:plain

2.2 オプション

Ctrl+Spaceはオプションに対しても使える。-まで入力してCtrl+Spaceすると、候補を表示してくれる。

f:id:takobose_ht:20210917225637p:plain

3. 操作全般の設定を確認するコマンドレット:Get-PSReadLineKeyHandler

設定を確認することもできるようだ。

PS > Get-PSReadLineKeyHandler


基本的な編集機能
========

Key              Function           Description
---              --------           -----------
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        最後の引数のテキストを入力にコピーします


カーソル移動の機能
=========

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


履歴機能

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


コンプリート機能
========

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


その他の機能
======

Key           Function              Description
---           --------              -----------
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             次に入力されたコードのキー バインドを表示します


選択機能

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


検索機能

Key      Function                Description
---      --------                -----------
F3       CharacterSearch         1 文字を読み取り、その文字が次に出現する位置にカーソルを移動します
Shift+F3 CharacterSearchBackward 1 文字を読み取り、その文字が前に出現する位置にカーソルを移動します

参考

PowerShellのTab補完をbashのようにする - minus9d's diary

Powershellで分からないコマンドはPowershellで調べる - Qiita


バージョン情報

> $PSVersionTable

Name                           Value                                                                                                          
----                           -----                                                                                                          
PSVersion                      5.1.19041.1023