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>]
    [<CommonParameters>]
说明
              Set-PSReadLineOption cmdlet 自定义编辑命令行时 PSReadLine 模块的行为。 若要查看 PSReadLine 设置,请使用 Get-PSReadLineOption。
此命令设置的选项仅适用于当前会话。 若要保留任何选项,请将它们添加到配置文件脚本。 有关详细信息,请参阅 about_Profiles 和 自定义 shell 环境。
示例
示例 1:设置前景和背景色
本示例设置 PSReadLine,以在灰色背景上显示带有绿色前景文本的 注释 标记。 在示例中使用的转义序列中,32 表示前景颜色,47 表示背景色。
Set-PSReadLineOption -Colors @{ "Comment"="$([char]0x1b)[32;47m" }
可以选择仅设置前景文本颜色。 例如,注释 标记的亮绿色前景文本颜色:"Comment"="$([char]0x1b)[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 "$([char]0x1b)[1 q"
    } else {
        # Set the cursor to a blinking line.
        Write-Host -NoNewline "$([char]0x1b)[5 q"
    }
}
Set-PSReadLineOption -ViModeIndicator Script -ViModeChangeHandler $Function:OnViModeChange
              OnViModeChange 函数为 Vi 模式设置游标选项:插入和命令。
              ViModeChangeHandler 使用 Function: 提供程序将 onViModeChange 引用为脚本块对象。
有关详细信息,请参阅 about_Providers。
示例 7:使用 HistoryHandler 筛选添加到历史记录的命令 
	以下示例演示如何使用 AddToHistoryHandler 来防止将任何 git 命令保存到历史记录中。
$ScriptBlock = {
    param ([string]$Line)
    if ($Line -match "^git") {
        return $false
    } else {
        return $true
    }
}
Set-PSReadLineOption -AddToHistoryHandler $ScriptBlock
如果命令以 $false开头,则 scriptblock 返回 git。 这与返回 SkipAddingAddToHistory 枚举的效果相同。 如果命令不以 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'
第一个字符串是出现分析错误时要使红色的提示字符串部分。 第二个字符串是分析错误时要使用的备用字符串。
参数
-AddToHistoryHandler  
		指定一个 ScriptBlock,用于控制如何将命令添加到 PSReadLine 历史记录。
ScriptBlock 接收命令行作为输入。
ScripBlock 应返回 AddToHistoryOption 枚举、这些成员的字符串名称或布尔值的成员。 下面的列表描述了可能的值及其效果。
- 
              MemoryAndFile- 将命令添加到历史记录文件和当前会话。
- 
              MemoryOnly- 仅将命令添加到当前会话的历史记录中。
- 
              SkipAdding- 不要将命令添加到当前会话的历史记录文件中。
- 
              $false- 与值SkipAdding相同。
- 
              $true- 与值MemoryAndFile相同。
参数属性
| 类型: | Func<T,TResult>[System.String,System.Object] | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-AnsiEscapeTimeout  
		此选项特定于重定向输入时,例如,在 tmux 或 screen下运行时。
在 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 颜色代码的详细信息,请参阅维基百科文章 ANSI 转义代码。
有效密钥包括:
- ContinuationPrompt:延续提示的颜色。
- 强调:强调颜色。 例如,搜索历史记录时匹配的文本。
- 错误:错误颜色。 例如,在提示符中。
- 选择:突出显示菜单选择或所选文本的颜色。
- 默认:默认令牌颜色。
- 注释:注释标记颜色。
- 关键字:关键字标记颜色。
- 字符串:字符串标记颜色。
- 运算符:运算符标记颜色。
- 变量:变量标记颜色。
- 命令:命令令牌颜色。
- 参数:参数标记颜色。
- 类型:类型标记颜色。
- 数字:数字标记颜色。
- 成员:成员名称标记颜色。
参数属性
| 类型: | Hashtable | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-CommandValidationHandler  
		指定从 ValidateAndAcceptLine调用的 ScriptBlock。 如果引发异常,则验证失败,并报告错误。
在引发异常之前,验证处理程序可以将光标置于错误点,以便更轻松地修复。 验证处理程序还可以更改命令行以更正常见的版式错误。
ValidateAndAcceptLine 用于避免使用无法使用的命令使历史记录混乱。
参数属性
| 类型: | |
| 默认值: | 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。 (Windows 上的默认值)
- 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 的值,如下所示:-HistoryNoDuplicates:$false。 只需使用 True,即可设置回 -HistoryNoDuplicates。
使用以下命令,可以直接设置属性值:
(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。
如果不使用此参数,默认路径为:
$Env:APPDATA\Microsoft\Windows\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 $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 设置为 SaveNothing,然后将其设置为同一会话中的稍后 SaveIncrementally,PSReadLine 将保存以前在会话中运行的所有命令。
参数属性
| 类型: | HistorySaveStyle | 
| 默认值: | SaveIncrementally | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-HistorySearchCaseSensitive   
		指定在 ReverseSearchHistory 或 HistorySearchBackward等函数中,历史记录搜索区分大小写。
默认情况下,全局 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 | 
-PromptText 
		此参数设置 PromptText 属性的值。 默认值是 "> "。
PSReadLine 分析提示函数,以确定如何仅更改提示部分颜色。 此分析不是 100% 可靠。 如果 PSReadLine 以意外方式更改提示,请使用此选项。 包括任何尾随空格。
此参数的值可以是单个字符串,也可以是两个字符串的数组。 第一个字符串是出现分析错误时要更改为红色的提示字符串部分。 第二个字符串是分析错误时要使用的备用字符串。
参数属性
| 类型: | 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 模式的可视指示器。 插入模式或命令模式。
有效值如下:
- 无:没有指示器。
- 提示:提示更改颜色。
- 游标:游标更改大小。
- 脚本:打印用户指定的文本。
参数属性
| 类型: | ViModeStyle | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-WordDelimiters 
		指定分隔 ForwardWord 或 KillWord等函数的单词的字符。
参数属性
| 类型: | 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
不能用管道将对象传送到此 cmdlet。
输出
None
此 cmdlet 不返回任何输出。