PowerShellでコマンドの履歴から予測機能を使いたい時

に投稿

に更新


PSReadLineを使用してコマンドの予測機能を有効にした状態の画像

いわゆるこの画像なようなことをやりたいというわけです。

要約

  • Windows 標準の PowerShell を使用せず、PowerShell Coreを使用した上での導入方法になります
  • PSReadLine にはこれ以外にも様々なエクスペリエンスを改善するための機能が大量にあるよ
  • PSReadLinePowerShellGetを使用してインストールする
  • ~/Documents/PowerShell/Microsoft.PowerShell_profile.ps1を作成
    • Import-Module PSReadLineを追加
    • Set-PSReadLineOption -PredictionSource Historyを上記のインポート文より後に追加
    • 保存
  • PowerShell を開き適当にコマンドを打つと履歴から予測されたコマンドが表示されるはず

インストール

PSReadLineとそれをインストールするために必要なPowerShellGetをインストールします

PowerShellGet

下記のコマンド2つを PowerShell で実行します

Install-Module -Name PowerShellGet -Force
Exit

PSReadLine

下記のコマンドを PowerShell で実行します

Install-Module PSReadLine

PowerShell のプロファイルに機能を有効にするためのコードを書く

PowerShell が読み込むプロファイルに予測機能を有効にするためのコマンドを書き込んでおくと、起動時に毎回 PSReadLine を毎回手動で読み込む必要がなくなります。

プロファイルが無い場合は作成する

~/DocumentsPowerShellというフォルダを作成し、その中にMicrosoft.PowerShell_profile.ps1というファイルを作成してください

プロファイルをエディタで開いて必要なものを書く

メモ帳でも Vim でもなんでも構いません。

開いたら、まずImport-Module PSReadLineと書き込み、そのインポート文の下にSet-PSReadLineOption -PredictionSource Historyと書き込み保存

終わり

PowerShell を開いて適当なコマンドを打てば、履歴から予測を表示してくれているはずです。

これだけではなく、PSReadLine には履歴検索などの様々なユーザーエクスペリエンスを改善する機能が多くあるためもっと知りたい方はドキュメントを見てみるといいかもしれません。