Set-PSReadLineOption

PSReadLine でのコマンド ライン編集の動作を カスタマイズします

構文

Set-PSReadLineOption
   [-EditMode <EditMode>]
   [-ContinuationPrompt <String>]
   [-HistoryNoDuplicates]
   [-AddToHistoryHandler <System.Func`2[System.String,System.Object]>]
   [-CommandValidationHandler <System.Action`1[System.Management.Automation.Language.CommandAst]>]
   [-HistorySearchCursorMovesToEnd]
   [-MaximumHistoryCount <Int32>]
   [-MaximumKillRingCount <Int32>]
   [-ShowToolTips]
   [-ExtraPromptLineCount <Int32>]
   [-DingTone <Int32>]
   [-DingDuration <Int32>]
   [-BellStyle <BellStyle>]
   [-CompletionQueryItems <Int32>]
   [-WordDelimiters <String>]
   [-HistorySearchCaseSensitive]
   [-HistorySaveStyle <HistorySaveStyle>]
   [-HistorySavePath <String>]
   [-AnsiEscapeTimeout <Int32>]
   [-PromptText <String[]>]
   [-ViModeIndicator <ViModeStyle>]
   [-ViModeChangeHandler <ScriptBlock>]
   [-PredictionSource <PredictionSource>]
   [-PredictionViewStyle <PredictionViewStyle>]
   [-Colors <Hashtable>]
   [<CommonParameters>]

説明

このコマンドレットは Set-PSReadLineOption 、コマンド ラインを 編集するときに PSReadLine モジュールの動作をカスタマイズします。 PSReadLine の設定を表示するには、次を使用しますGet-PSReadLineOption

このコマンドによって設定されたオプションは、現在のセッションにのみ適用されます。 オプションを保持するには、プロファイル スクリプトに追加します。 詳細については、シェル環境のabout_Profilesカスタマイズを参照してください。

例 1: 前景色と背景色を設定する

次の使用例は、灰色の背景に緑色の前景テキストを含むコメント トークンを表示するように PSReadLine を設定します。 この例で使用したエスケープ シーケンスでは、32 は前景色を表し、47 は背景色を表します。

Set-PSReadLineOption -Colors @{ "Comment"="`e[32;47m" }

前景色のみを設定できます。 たとえば、コメント トークンの明るい緑色の前景テキストの色: "Comment"="`e[92m"

例 2: ベル スタイルを設定する

この例では、 PSReadLine は、ユーザーの注意を必要とするエラーまたは条件に応答します。 BellStyle、1221 Hz で 60 ミリ秒の可聴ビープ音を発するように設定されています。

Set-PSReadLineOption -BellStyle Audible -DingTone 1221 -DingDuration 60

Note

この機能は、プラットフォーム上のすべてのホストで機能しない場合があります。

例 3: 複数のオプションを設定する

Set-PSReadLineOption では、ハッシュ テーブルを使用して複数のオプションを設定できます。

$PSReadLineOptions = @{
    EditMode = "Emacs"
    HistoryNoDuplicates = $true
    HistorySearchCursorMovesToEnd = $true
    Colors = @{
        "Command" = "#8181f7"
    }
}
Set-PSReadLineOption @PSReadLineOptions

ハッシュ テーブルは $PSReadLineOptions 、キーと値を設定します。 Set-PSReadLineOptionでは、キーと値@PSReadLineOptionsを使用して PSReadLine オプションを更新します。

PowerShell コマンド ラインで、 $PSReadLineOptions ハッシュ テーブル名を入力するキーと値を表示できます。

例 4: 複数の色オプションを設定する

この例では、1 つのコマンドで複数の色の値を設定する方法を示します。

Set-PSReadLineOption -Colors @{
  Command            = 'Magenta'
  Number             = 'DarkGray'
  Member             = 'DarkGray'
  Operator           = 'DarkGray'
  Type               = 'DarkGray'
  Variable           = 'DarkGreen'
  Parameter          = 'DarkGreen'
  ContinuationPrompt = 'DarkGray'
  Default            = 'DarkGray'
}

例 5: 複数の種類の色の値を設定する

この例では、PSReadLine に表示されるトークンの色を設定する方法について、3 つの異なるメソッドを示します。

Set-PSReadLineOption -Colors @{
 # Use a ConsoleColor enum
 "Error" = [ConsoleColor]::DarkRed

 # 24 bit color escape sequence
 "String" = "$([char]0x1b)[38;5;100m"

 # RGB value
 "Command" = "#8181f7"
}

例 6: ViModeChangeHandler を使用して Vi モードの変更を表示する

この例では、Vi モードの変更に応じて、カーソル変更 VT エスケープを出力します。

function OnViModeChange {
    if ($args[0] -eq 'Command') {
        # Set the cursor to a blinking block.
        Write-Host -NoNewLine "`e[1 q"
    } else {
        # Set the cursor to a blinking line.
        Write-Host -NoNewLine "`e[5 q"
    }
}
Set-PSReadLineOption -ViModeIndicator Script -ViModeChangeHandler $Function:OnViModeChange

OnViModeChange 関数は、Vi モード (insert と command) のカーソル オプションを設定します。 ViModeChangeHandler は、プロバイダーをFunction:使用して OnViModeChange をスクリプト ブロック オブジェクトとして参照します。

詳細については、「about_Providers」を参照してください

例 7: HistoryHandler を使用して履歴に追加されたコマンドをフィルター処理する

次の例は、git コマンドを AddToHistoryHandler 履歴に保存しないようにする方法を示しています。

$ScriptBlock = {
    Param([string]$line)

    if ($line -match "^git") {
        return $false
    } else {
        return $true
    }
}

Set-PSReadLineOption -AddToHistoryHandler $ScriptBlock

scriptblock は、コマンドgit$false . これは、AddToHistory 列挙型を返すのSkipAddingと同じ効果があります。 コマンドが開始 gitしない場合、ハンドラーは戻 $true り、PSReadLine はコマンドを履歴に保存します。

例 8: CommandValidationHandler を使用して、実行前にコマンドを検証する

この例では、CommandValidationHandler パラメーターを使用して、実行前にコマンドを検証する方法を示します。 この例では、具体的には、コマンドgitのチェックをサブ コマンドcmtに置き換え、完全な名前commitに置き換えます。 これにより、サブコマンドの短縮形エイリアスを作成できます。

# Load the namespace so you can use the [CommandAst] object type
using namespace System.Management.Automation.Language

Set-PSReadLineOption -CommandValidationHandler {
    param([CommandAst]$CommandAst)

    switch ($CommandAst.GetCommandName()) {
        'git' {
            $gitCmd = $CommandAst.CommandElements[1].Extent
            switch ($gitCmd.Text) {
                'cmt' {
                    [Microsoft.PowerShell.PSConsoleReadLine]::Replace(
                        $gitCmd.StartOffset, $gitCmd.EndOffset - $gitCmd.StartOffset, 'commit')
                }
            }
        }
    }
}
# This checks the validation script when you hit enter
Set-PSReadLineKeyHandler -Chord Enter -Function ValidateAndAcceptLine

例 9: PromptText パラメーターの使用

解析エラーが発生すると、 PSReadLine はプロンプトの一部を赤で変更します。 PromptText パラメーターはPSReadLine にプロンプト文字列の一部を赤にするよう指示します。

たとえば、次の例では、現在のパスの後に大きい文字 (>) とスペースが続くプロンプトを作成します。

function prompt { "PS $pwd> " }`
Set-PSReadLineOption -PromptText '> ' # change the '>' character red
Set-PSReadLineOption -PromptText '> ', 'X ' # replace the '>' character with a red 'X'

最初の文字列は、解析エラーが発生したときに赤にするプロンプト文字列の部分です。 2 番目の文字列は、解析エラーが発生したときに使用する代替文字列です。

パラメーター

-AddToHistoryHandler

PSReadLine 履歴に コマンドを追加する方法を制御する ScriptBlock指定 します。

ScriptBlock、コマンド ラインを入力として受け取ります。

ScripBlock、AddToHistoryOption 列挙型のメンバー、それらのメンバーの 1 つの文字列名、またはブール値を返す必要があります。 次の一覧では、使用可能な値とその効果について説明します。

  • MemoryAndFile - コマンドを履歴ファイルと現在のセッションに追加します。
  • MemoryOnly - 現在のセッションのみの履歴にコマンドを追加します。
  • SkipAdding - 現在のセッションの履歴ファイルにコマンドを追加しないでください。
  • $false - 値 SkipAddingが .
  • $true - 値 MemoryAndFileが .
Type:Func<T,TResult>[System.String,System.Object]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AnsiEscapeTimeout

このオプションは、入力がリダイレクトされるときに Windows に固有です 。たとえば、以下で実行 tmux されている場合や screen

Windows でリダイレクトされた入力では、多くのキーがエスケープ文字で始まる文字のシーケンスとして送信されます。 1 つのエスケープ文字の後にさらに多くの文字と有効なエスケープ シーケンスを区別することはできません。

前提は、端末がユーザーが入力したよりも速く文字を送信できることです。 PSReadLine は、完全なエスケープ シーケンスを受け取ったことを終了する前に、このタイムアウトを待機します。

入力時にランダムまたは予期しない文字が表示される場合は、このタイムアウトを調整できます。

Type:Int32
Position:Named
Default value:100
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-BellStyle

さまざまなエラーおよびあいまいな条件に PSReadLine がどのように応答するかを指定します。

有効な値は次のとおりです。

  • 可聴:短いビープ音。
  • ビジュアル: テキストが短時間点滅します。
  • なし: フィードバックはありません。
Type:BellStyle
Position:Named
Default value:Audible
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Colors

Colors パラメーターは、PSReadLine で使用されるさまざまな色を指定します

引数はハッシュ テーブルで、キーは要素を指定し、値は色を指定します。 詳細については、「about_Hash_Tables」を参照してください

色には、ConsoleColor値 (たとえば[ConsoleColor]::Red)、有効な ANSI エスケープ シーケンスのいずれかを指定できます。 有効なエスケープ シーケンスは、ターミナルによって異なります。 PowerShell 5.0 では、赤いテキストのエスケープ シーケンスの例を次に示 $([char]0x1b)[91mします。 PowerShell 6 以降では、同じエスケープ シーケンスです `e[91m。 次の型を含む他のエスケープ シーケンスを指定できます。

PSReadLine 2.2.0 でのカスタマイズを ListView サポートするために、次の 2 つの色設定が追加されました。

  • ListPredictionColor - 先頭 > 文字と末尾のソース名の色を設定します (例 [History]: . 既定では、前景色として使用 DarkYellow されます。

  • ListPredictionSelectedColor - リスト アイテムが選択されていることを示す色を設定します。 既定では、背景色として使用 DarkBlack されます。

  • 256 色

  • 24 ビットカラー

  • 前景、背景、またはその両方

  • 逆、太字

ANSI カラー コードの詳細については、Wikipedia の記事 「ANSI エスケープ コード」を参照してください。

有効なキーは次のとおりです。

  • ContinuationPrompt: 継続プロンプトの色。
  • 強調: 強調色。 たとえば、履歴を検索するときの一致するテキストなどです。
  • エラー: エラーの色。 たとえば、プロンプトに表示されます。
  • 選択: メニュー選択または選択したテキストを強調表示する色。
  • 既定値: 既定のトークンの色。
  • コメント: コメント トークンの色。
  • キーワード: キーワード (keyword) トークンの色。
  • 文字列: 文字列トークンの色。
  • 演算子: 演算子トークンの色。
  • 変数: 可変トークンの色。
  • コマンド: コマンド トークンの色。
  • パラメーター: パラメーター トークンの色。
  • : トークンの種類の色。
  • 数値: トークンの色を指定します。
  • メンバー: メンバー名トークンの色。
  • InlinePrediction: 予測候補のインライン ビューの色。
  • ListPrediction: 先頭 > 文字と予測ソース名の色。
  • ListPredictionSelected: リスト ビューで選択した予測の色。
Type:Hashtable
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CommandValidationHandler

ValidateAndAcceptLine から呼び出される ScriptBlock を指定します。 例外がスローされた場合、検証は失敗し、エラーが報告されます。

例外をスローする前に、検証ハンドラーはエラーの時点にカーソルを置いて、修正を容易にすることができます。 検証ハンドラーは、コマンド ラインを変更して、一般的な文字体裁エラーを修正することもできます。

ValidateAndAcceptLine は、機能しないコマンドで履歴が乱雑にならないようにするために使用されます。

Type:Action<T>[CommandAst]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CompletionQueryItems

プロンプトなしで表示される完了項目の最大数を指定します。

表示する項目の数がこの値を超える場合、 PSReadLine は完了項目を 表示する前に yes/no を求めます。

Type:Int32
Position:Named
Default value:100
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ContinuationPrompt

複数行の入力が入力されたときに、後続の行の先頭に表示される文字列を指定します。 既定値は二重より大きい記号 (>>) です。 空の文字列が有効です。

Type:String
Position:Named
Default value:>>
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DingDuration

BellStyle が可聴に設定されている場合のビープ音の継続時間を指定します。

Type:Int32
Position:Named
Default value:50ms
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DingTone

BellStyle が可聴に設定されている場合のビープ音の音色を Hertz (Hz) で指定します。

Type:Int32
Position:Named
Default value:1221
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EditMode

コマンド ライン編集モードを指定します。 このパラメーターを使用すると、次によって Set-PSReadLineKeyHandler設定されたすべてのキー バインドがリセットされます。

有効な値は次のとおりです。

  • Windows: キー バインドは、PowerShell、cmd、および Visual Studio をエミュレートします。
  • Emacs: キー バインディングは Bash または Emacs をエミュレートします。
  • Vi: キー バインドは Vi をエミュレートします。

現在構成されている EditMode のキー バインドを表示するために使用Get-PSReadLineKeyHandlerします

Type:EditMode
Position:Named
Default value:Windows
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ExtraPromptLineCount

余分な行の数を指定します。

プロンプトが複数行にまたがる場合は、このパラメーターの値を指定します。 このオプションは、PSReadLine が出力を表示した後にプロンプトを表示するときに、追加の行を使用できるようにする場合に使用します。 たとえば、 PSReadLine は入力候補の一覧を返します。

このオプションは、以前のバージョンの PSReadLine よりも少なく必要ですが、関数を使用する場合に InvokePrompt 便利です。

Type:Int32
Position:Named
Default value:0
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistoryNoDuplicates

このオプションは、取り消し動作を制御します。 重複するコマンドは履歴ファイルに引き続き追加されます。 このオプションを設定すると、コマンドを呼び出すときに最新の呼び出しのみが表示されます。 繰り返しコマンドが履歴に追加され、呼び戻し中の順序が保持されます。 ただし、通常、履歴を呼び出したり検索したりするときに、コマンドを複数回表示する必要はありません。

既定では、グローバル PSConsoleReadLineOptions オブジェクトの HistoryNoDuplicates プロパティは True. プロパティ値を変更するには、SwitchParameter の値を-HistoryNoDuplicates:$Falseのように指定する必要があります。 SwitchParameter-HistoryNoDuplicates のみを使用して戻Trueすことができます。

次のコマンドを使用して、プロパティ値を直接設定できます。

(Get-PSReadLineOption).HistoryNoDuplicates = $False

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySavePath

履歴を保存するファイルへのパスを指定します。 Windows または Windows 以外のプラットフォームを実行しているコンピューターは、ファイルを異なる場所に格納します。 ファイル名は、たとえばConsoleHost_history.txt変数に$($Host.Name)_history.txt格納されます。

このパラメーターを使用しない場合、既定のパスは次のようになります。

Windows

  • $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\$($Host.Name)_history.txt

Windows 以外

  • $env:XDG_DATA_HOME/powershell/PSReadLine/$($Host.Name)_history.txt
  • $HOME/.local/share/powershell/PSReadLine/$($Host.Name)_history.txt
Type:String
Position:Named
Default value:A file named $($Host.Name)_history.txt in $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine on Windows and $env:XDG_DATA_HOME/powershell/PSReadLine or $HOME/.local/share/powershell/PSReadLine on non-Windows platforms
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySaveStyle

PSReadLine で履歴を保存する方法 指定します。

有効な値は次のとおりです。

  • SaveIncrementally: 各コマンドの実行後に履歴を保存し、PowerShell の複数のインスタンス間で共有します。
  • SaveAtExit: PowerShell の終了時に履歴ファイルを追加します。
  • SaveNothing: 履歴ファイルは使用しないでください。

Note

HistorySaveStyleSaveNothing同じセッションで後で設定SaveIncrementallyした場合、PSReadLine はセッションで以前に実行したすべてのコマンドを保存します。

Type:HistorySaveStyle
Position:Named
Default value:SaveIncrementally
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySearchCaseSensitive

ReverseSearchHistory や HistorySearchBackward などの関数では、履歴検索で大文字と小文字が区別されることを指定します。

既定では、グローバル PSConsoleReadLineOptions オブジェクトの HistorySearchCaseSensitive プロパティは False. この SwitchParameter を使用すると、プロパティ値 Trueが . プロパティ値を元に戻すには、SwitchParameter の値を-HistorySearchCaseSensitive:$Falseのように指定する必要があります。

次のコマンドを使用して、プロパティ値を直接設定できます。

(Get-PSReadLineOption).HistorySearchCaseSensitive = $False

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySearchCursorMovesToEnd

検索を使用して履歴から読み込むコマンドの末尾にカーソルが移動することを示します。 このパラメーターを$False設定すると、上矢印または下矢印を押したときの位置にカーソルが再メイン。

既定では、グローバル PSConsoleReadLineOptions オブジェクトの HistorySearchCursorMovesToEnd プロパティは False. この SwitchParameter を使用して、プロパティ値 Trueを . プロパティ値を元に戻すには、SwitchParameter の値を-HistorySearchCursorMovesToEnd:$Falseのように指定する必要があります。

次のコマンドを使用して、プロパティ値を直接設定できます。

(Get-PSReadLineOption).HistorySearchCursorMovesToEnd = $False

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumHistoryCount

PSReadLine 履歴に保存 するコマンドの最大数を 指定します。

PSReadLine の履歴は、PowerShell 履歴とは別です。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumKillRingCount

キル リングに格納されるアイテムの最大数を指定します。

Type:Int32
Position:Named
Default value:10
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PredictionSource

予測候補を取得する PSReadLine のソースを指定します。

有効な値は次の通りです。

  • なし - 予測 IntelliSense 機能を無効にします (既定)。
  • 履歴 - 予測 IntelliSense 機能を有効にし、PSReadLine 履歴を唯一のソースとして使用します。
  • プラグイン - 予測 IntelliSense 機能を有効にし、唯一のソースとしてプラグイン (CommandPrediction) を使用します。 この値は PSReadLine 2.2.0 で追加されました
  • HistoryAndPlugin - 予測 IntelliSense 機能を有効にし、履歴とプラグインの両方をソースとして使用します。 この値は PSReadLine 2.2.0 で追加されました
Type:Microsoft.PowerShell.PredictionSource
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PredictionViewStyle

予測テキストの表示スタイルを設定します。 既定値は InlineView です

  • InlineView - 現在のスタイル 。魚殻や zsh と同様です。 (既定値)。
  • ListView - 候補はドロップダウン リストに表示され、ユーザーは UpArrow と DownArrow を使用して選択できます。

このパラメーターは PSReadLine 2.2.0 で追加されました

Type:Microsoft.PowerShell.PredictionViewStyle
Position:Named
Default value:InlineView
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PromptText

このパラメーターは、PromptText プロパティの値を設定します。 既定値は "> " です。

PSReadLine は、プロンプト関数を分析して、プロンプトの一部の色のみを変更する方法を決定します。 この分析は 100% 信頼できません。 PSReadLine が予期しない方法でプロンプトを変更する場合は、このオプションを使用します。 末尾の空白文字を含めます。

このパラメーターの値には、1 つの文字列または 2 つの文字列の配列を指定できます。 最初の文字列は、解析エラーが発生したときに赤に変更するプロンプト文字列の部分です。 2 番目の文字列は、解析エラーが発生したときに使用する代替文字列です。

Type:String[]
Position:Named
Default value:>
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ShowToolTips

可能な入力候補を表示すると、入力候補の一覧にヒントが表示されます。

既定では、このオプションは有効になっています。 このオプションは、以前のバージョンの PSReadLine では既定では有効になっていませんでした。 無効にするには、このオプションを $False.

既定では、グローバル PSConsoleReadLineOptions オブジェクトの ShowToolヒント プロパティは True. この SwitchParameter を使用すると、プロパティ値 Trueが . プロパティ値を変更するには、SwitchParameter の値を-ShowToolTips:$Falseのように指定する必要があります。

次のコマンドを使用して、プロパティ値を直接設定できます。

(Get-PSReadLineOption).ShowToolTips = $False

Type:SwitchParameter
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ViModeChangeHandler

ViModeIndicator が設定Scriptされている場合、指定されたスクリプト ブロックはモードが変更されるたびに呼び出されます。 スクリプト ブロックには、型 ViModeの引数が 1 つ用意されています。

このパラメーターは PowerShell 7 で導入されました。

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ViModeIndicator

このオプションは、現在 の Vi モードのビジュアル インジケーターを設定します。 挿入モードまたはコマンド モード。

有効な値は次のとおりです。

  • なし: インジケーターはありません。
  • プロンプト: プロンプトの色が変更されます。
  • カーソル: カーソルのサイズが変更されます。
  • スクリプト: ユーザー指定のテキストが出力されます。
Type:ViModeStyle
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WordDelimiters

ForwardWord や KillWord などの関数の単語を区切る文字を指定します

Type:String
Position:Named
Default value:;:,.[]{}()/\|^&*-=+'"---
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

None

このコマンドレットにオブジェクトをパイプすることはできません。

出力

None

このコマンドレットは、出力を返しません。