PowerShellのモジュールPSReadLineでは入力履歴を管理しており。
PSReadLineの設定項目にあるPredictionViewStyleでListView
を設定していると、この入力履歴を下記のようにいい感じに入力履歴を表示してくれます。
いい感じに表示してくれますが、コマンドをタイポした場合だったり、削除したい入力履歴がでてくることもあります。
その場合は、下記コマンドで入力履歴の保存場所を取得できるので、こちらに表示されたファイルから該当コマンドを削除します。
Get-PSReadLineOption | Select-Object -ExpandProperty historysavepath
上記ファイルを変更後、PowerShellのセッションを起動すると削除した内容が入力履歴に表示されたない事を確認できます。
PowerShellのコンソールからShift+Deleteで削除できるようカスタムキーハンドラに登録する
PSReadLineで表示される入力履歴について、何らかのキー操作で現在選択している入力履歴をキー操作で削除できれば便利そう。
例えばコンソール上で選択している入力履歴候補を取得して、一致する文字列を履歴ファイルから削除するような方法とか。
とちょっと探してみた所、下記のissueがありました。
Question/Request: Is it possible to remove an item from the history?
この中のコメントでPSReadLineのキーハンドラにshift+delete
から現在している行の内容を入力履歴から削除する実装が紹介されていました。
https://github.com/PowerShell/PSReadLine/issues/1778#issuecomment-1111383429
自分はこちらの内容を起動プロファイルに入れてしばらく使ってみましたが。
たまに入力履歴を調整する際に、PowerShellコンソールから直接調整できるのは便利です。
(調整後に新しいセッションを開く必要はありますが)
総評
PSReadLineの入力履歴をコンソール上から削除できれば便利なのにと探したら、そのものズバリをPSReadLineのキーハンドラで設定している人がいました。 やっぱみんなこれやりたいよなという感じ。
そのまま使ってみていますが便利です。