LoginSignup
1
0

More than 1 year has passed since last update.

PSReadLineで提供される入力履歴の削除について

Posted at

PowerShellのモジュールPSReadLineでは入力履歴を管理しており。

PSReadLineの設定項目にあるPredictionViewStyleでListViewを設定していると、この入力履歴を下記のようにいい感じに入力履歴を表示してくれます。

image.png

いい感じに表示してくれますが、コマンドをタイポした場合だったり、削除したい入力履歴がでてくることもあります。

その場合は、下記コマンドで入力履歴の保存場所を取得できるので、こちらに表示されたファイルから該当コマンドを削除します。

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のキーハンドラで設定している人がいました。 やっぱみんなこれやりたいよなという感じ。

そのまま使ってみていますが便利です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0