Set-PSReadLineOption

自定义 PSReadLine中命令行编辑的行为。

语法

Default (默认值)

Set-PSReadLineOption
    [-EditMode <EditMode>]
    [-ContinuationPrompt <String>]
    [-HistoryNoDuplicates]
    [-AddToHistoryHandler <System.Func[System.String,System.Object]>]
    [-CommandValidationHandler <System.Action[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>]
    [-Colors <Hashtable>]
    [-PredictionSource <PredictionSource>]
    [<CommonParameters>]

说明

Set-PSReadLineOption cmdlet 自定义编辑命令行时 PSReadLine 模块的行为。 若要查看 PSReadLine 设置,请使用 Get-PSReadLineOption

示例

示例 1:设置前景和背景色

本示例设置 PSReadLine,以在灰色背景上显示带有绿色前景文本的 注释 标记。 在示例中使用的转义序列中,32 表示前景颜色,47 表示背景色。

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

可以选择仅设置前景文本颜色。 例如,注释 标记的亮绿色前景文本颜色:"Comment"="`e[92m"

示例 2:设置钟形样式

在此示例中,PSReadLine 将响应需要用户注意的错误或条件。 BellStyle 设置为以 60 毫秒的 1221 Hz 发出声音蜂鸣声。

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

注释

此功能可能不适用于平台上的所有主机。

示例 3:设置多个选项

Set-PSReadLineOption 可以使用哈希表设置多个选项。

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

$PSReadLineOptions 哈希表设置键和值。 Set-PSReadLineOption 使用具有 @PSReadLineOptions 的键和值来更新 PSReadLine 选项。

可以在 PowerShell 命令行上查看输入哈希表名称的键和值,$PSReadLineOptions

示例 4:设置多个颜色选项

此示例演示如何在单个命令中设置多个颜色值。

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

示例 5:设置多种类型的颜色值

此示例演示了三种不同的方法,用于设置 PSReadLine中显示的标记的颜色。

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 模式更改

此示例发出游标更改 VT 转义,以响应 Vi 模式更改。

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 模式设置游标选项:插入和命令。 ViModeChangeHandler 使用 Function: 提供程序将 onViModeChange 引用为脚本块对象。

有关详细信息,请参阅 about_Providers

参数

-AddToHistoryHandler

指定一个 ScriptBlock ,用于控制将哪些命令添加到 PSReadLine 历史记录中。

ScriptBlock 接收命令行作为输入。 如果 ScriptBlock 返回 $True,则命令行将添加到历史记录中。

参数属性

类型:

Func<T,TResult>[System.String,System.Object]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-AnsiEscapeTimeout

此选项特定于重定向输入时,例如,在 tmuxscreen下运行时。

在 Windows 上使用重定向输入时,许多键以转义字符开头的字符序列发送。 无法区分单个转义字符后跟更多字符和有效的转义序列。

假设终端可以比用户类型更快地发送字符。 PSReadLine 等待此超时,然后得出结论,它已收到完整的转义序列。

如果在键入时看到随机字符或意外字符,可以调整此超时。

参数属性

类型:Int32
默认值:100
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-BellStyle

指定 PSReadLine 如何响应各种错误和不明确条件。

有效值如下:

  • 听到的:一个简短的蜂鸣声。
  • 视觉对象:文本短暂闪烁。
  • :无反馈。

参数属性

类型:BellStyle
默认值:Audible
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Colors

Colors 参数指定 PSReadLine使用的各种颜色。

参数是一个哈希表,其中键指定哪个元素,值指定颜色。 有关详细信息,请参阅 about_Hash_Tables

颜色可以是 ConsoleColor中的值,例如 [ConsoleColor]::Red,也可以是有效的 ANSI 转义序列。 有效的转义序列取决于终端。 在 PowerShell 5.0 中,红色文本的示例转义序列 $([char]0x1b)[91m。 在 PowerShell 6 及更高版本中,相同的转义序列为 `e[91m. 可以指定其他转义序列,包括以下类型:

  • 256 颜色
  • 24 位颜色
  • 前景、背景或两者兼有
  • 反函数,粗体

有关 ANSI 颜色代码的更多信息,请参阅 Wikipedia 中的 ANSI 转义码

有效密钥包括:

  • ContinuationPrompt:延续提示的颜色。
  • 强调:强调颜色。 例如,搜索历史记录时匹配的文本。
  • 错误:错误颜色。 例如,在提示符中。
  • 选择:突出显示菜单选择或所选文本的颜色。
  • 默认:默认令牌颜色。
  • 注释:注释标记颜色。
  • 关键字:关键字标记颜色。
  • 字符串:字符串标记颜色。
  • 运算符:运算符标记颜色。
  • 变量:变量标记颜色。
  • 命令:命令令牌颜色。
  • 参数:参数标记颜色。
  • 类型:类型标记颜色。
  • 数字:数字标记颜色。
  • 成员:成员名称标记颜色。
  • InlinePrediction:预测建议内联视图的颜色。

参数属性

类型:Hashtable
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CommandValidationHandler

指定从 ValidateAndAcceptLine调用的 ScriptBlock。 如果引发异常,则验证失败,并报告错误。

在引发异常之前,验证处理程序可以将光标置于错误点,以便更轻松地修复。 验证处理程序还可以更改命令行,例如更正常见的版式错误。

ValidateAndAcceptLine 用于避免使用无法使用的命令使历史记录混乱。

参数属性

类型:

Action<T>[CommandAst]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CompletionQueryItems

指定在未提示的情况下显示的最大完成项数。

如果要显示的项目数大于此值,PSReadLine 在显示完成项之前提示 是/否

参数属性

类型:Int32
默认值:100
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ContinuationPrompt

指定在输入多行输入时在后续行的开头显示的字符串。 默认值为双倍大于符号(>>)。 空字符串有效。

参数属性

类型:String
默认值:>>
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-DingDuration

指定当 BellStyle 设置为 Audible时的蜂鸣声持续时间。

参数属性

类型:Int32
默认值:50ms
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-DingTone

指定当 BellStyle 设置为 “可听时,蜂鸣声(Hz)中的音调。

参数属性

类型:Int32
默认值:1221
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-EditMode

指定命令行编辑模式。 使用此参数可重置由 Set-PSReadLineKeyHandler设置的任何键绑定。

有效值如下:

  • Windows:密钥绑定模拟 PowerShell、cmd 和 Visual Studio。
  • Emacs:密钥绑定模拟 Bash 或 Emacs。
  • Vi:密钥绑定模拟 Vi。

使用 Get-PSReadLineKeyHandler 查看当前配置的 EditMode的键绑定。

参数属性

类型:EditMode
默认值:Windows
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ExtraPromptLineCount

指定额外行数。

如果提示跨多个行,请指定此参数的值。 当 PSReadLine 显示某些输出后显示提示时,请使用此选项。 例如,PSReadLine 返回完成列表。

此选项需要低于以前版本的 PSReadLine,但在使用 InvokePrompt 函数时非常有用。

参数属性

类型:Int32
默认值:0
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-HistoryNoDuplicates

此选项控制召回行为。 仍会将重复的命令添加到历史记录文件中。 设置此选项后,撤回命令时只会显示最新的调用。 重复的命令将添加到历史记录中,以便在召回期间保留排序。 但是,在回忆或搜索历史记录时,通常不希望多次看到该命令。

默认情况下,全局 PSConsoleReadLineOptions 对象的 HistoryNoDuplicates 属性设置为 True。 使用此 SwitchParameter 将属性值设置为 True。 若要更改属性值,必须指定 SwitchParameter 的值,如下所示:-HistoryNoDuplicates:$False

使用以下命令,可以直接设置属性值:

(Get-PSReadLineOption).HistoryNoDuplicates = $False

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-HistorySavePath

指定保存历史记录的文件的路径。 运行 Windows 或非 Windows 平台的计算机将文件存储在不同的位置。 文件名存储在变量 $($host.Name)_history.txt中,例如 ConsoleHost_history.txt

如果不使用此参数,默认路径如下所示:

Windows操作系统

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

非 Windows

  • $env:XDG_DATA_HOME/powershell/PSReadLine/$($host.Name)_history.txt
  • $env:HOME/.local/share/powershell/PSReadLine/$($host.Name)_history.txt

参数属性

类型:String
默认值:A file named $($host.Name)_history.txt in $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine on Windows and $env:XDG_DATA_HOME/powershell/PSReadLine or $env:HOME/.local/share/powershell/PSReadLine on non-Windows platforms
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-HistorySaveStyle

指定 PSReadLine 如何保存历史记录。

有效值如下所示:

  • SaveIncrementally:在执行每个命令后保存历史记录,并在 PowerShell 的多个实例之间共享。
  • SaveAtExit:PowerShell 退出时追加历史记录文件。
  • SaveNothing:请勿使用历史记录文件。

参数属性

类型:HistorySaveStyle
默认值:SaveIncrementally
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-HistorySearchCaseSensitive

指定在 ReverseSearchHistoryHistorySearchBackward等函数中,历史记录搜索区分大小写。

默认情况下,全局 PSConsoleReadLineOptions 对象的 HistorySearchCaseSensitive 属性设置为 False。 使用此 SwitchParameter 将属性值设置为 True。 若要重新更改属性值,必须指定 SwitchParameter 的值,如下所示:-HistorySearchCaseSensitive:$False

使用以下命令,可以直接设置属性值:

(Get-PSReadLineOption).HistorySearchCaseSensitive = $False

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-HistorySearchCursorMovesToEnd

指示光标移动到使用搜索从历史记录加载的命令的末尾。 如果此参数设置为 $False,光标将保留在按下向上或向下箭头时所处的位置。

默认情况下,全局 PSConsoleReadLineOptions 对象的 HistorySearchCursorMovesToEnd 属性设置为 False。 使用此 SwitchParameter 将属性值设置为 True。 若要重新更改属性值,必须指定 SwitchParameter 的值,如下所示:-HistorySearchCursorMovesToEnd:$False

使用以下命令,可以直接设置属性值:

(Get-PSReadLineOption).HistorySearchCursorMovesToEnd = $False

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-MaximumHistoryCount

指定要在 PSReadLine 历史记录中保存的最大命令数。

PSReadLine 历史记录与 PowerShell 历史记录分开。

参数属性

类型:Int32
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-MaximumKillRingCount

指定终止环中存储的最大项数。

参数属性

类型:Int32
默认值:10
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-PredictionSource

指定 PSReadLine 获取预测建议的源。

有效值为:

  • :禁用预测建议功能
  • 历史记录:仅从历史记录中获取预测建议

参数属性

类型:PredictionSource
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-PromptText

出现分析错误时,PSReadLine 更改提示红色的一部分。 PSReadLine 分析提示函数,以确定如何仅更改提示部分颜色。 此分析不是 100% 可靠。

如果 PSReadLine 以意外方式更改提示,请使用此选项。 包括任何尾随空格。

例如,如果您的 prompt 函数类似于以下示例:

function prompt { Write-Host -NoNewLine -ForegroundColor Yellow "$pwd"; return "# " }

然后设置:

Set-PSReadLineOption -PromptText "# "

参数属性

类型:

String[]

支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ShowToolTips

显示可能的完成时,工具提示将显示在完成列表中。

此选项默认处于启用状态。 默认情况下,在以前版本的 PSReadLine中未启用此选项。 若要禁用,请将此选项设置为 $False

默认情况下,全局 PSConsoleReadLineOptions 对象的 ShowToolTips 属性设置为 True。 使用此 SwitchParameter 将属性值设置为 True。 若要更改属性值,必须指定 SwitchParameter 的值,如下所示:-ShowToolTips:$False

使用以下命令,可以直接设置属性值:

(Get-PSReadLineOption).ShowToolTips = $False

参数属性

类型:SwitchParameter
默认值:True
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ViModeChangeHandler

ViModeIndicator 设置为 Script时,每次模式更改时都会调用提供的脚本块。 脚本块提供 ViMode类型的一个参数。

此参数是在 PowerShell 7 中引入的。

参数属性

类型:ScriptBlock
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ViModeIndicator

此选项设置当前 Vi 模式的视觉指示。 插入模式或命令模式。

有效值如下:

  • None:没有迹象。
  • 提示:提示更改颜色。
  • 游标:游标更改大小。
  • 脚本:打印用户指定的文本。

参数属性

类型:ViModeStyle
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WordDelimiters

指定分隔 ForwardWordKillWord等函数的单词的字符。

参数属性

类型:String
默认值:;:,.[]{}()/\|^&*-=+'"–—―
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

None

不能将对象通过管道传输到 Set-PSReadLineOption.

输出

None

此 cmdlet 将不生成任何输出。