about_PSReadLine_Functions

简短说明

PSReadLine 在 PowerShell 控制台中提供改进的命令行编辑体验。

详细说明

PowerShell 5.1 随附 PSReadLine 2.0.0。 当前版本为 PSReadLine 2.3.6。 当前版本的 PSReadLine 可以在 Windows PowerShell 5.1 及更高版本上安装和使用。 对于某些功能,需要运行 PowerShell 7.2 或更高版本。

本文介绍 PSReadLine 2.0.0 提供的函数。 这些功能可以绑定到按键,以便轻松访问和调用。

使用 Microsoft.PowerShell.PSConsoleReadLine 类

Microsoft.PowerShell.PSConsoleReadLine 中提供了以下函数。

基本编辑函数

中止

中止当前操作,例如:增量历史记录搜索。

  • Emacs 模式:<Ctrl+g>

AcceptAndGetNext

尝试执行当前输入。 如果它可以执行(如 AcceptLine),则在下次调用 ReadLine 时从历史记录中召回下一个项目。

  • Emacs 模式:<Ctrl+o>

AcceptLine

尝试执行当前输入。 如果当前输入不完整(例如缺少闭括号、方括号或引号),则延续提示将显示在下一行,PSReadLine 等待键编辑当前输入。

  • Windows 模式:<Enter>
  • Emacs 模式:<Enter>
  • Vi 插入模式:<Enter>

AddLine

延续提示显示在下一行,PSReadLine 等待键编辑当前输入。 这对于将多行输入作为一条命令输入非常有用,即使单行本身已完成输入。

  • Windows 模式:<Shift+Enter>
  • Emacs 模式:<Shift+Enter>
  • Vi 插入模式:<Shift+Enter>
  • Vi 命令模式:<Shift+Enter>

BackwardDeleteChar

删除游标前的字符。

  • Windows 模式:<Backspace><Ctrl+h>
  • Emacs 模式:<Backspace><Ctrl+Backspace><Ctrl+h>
  • Vi 插入模式:<Backspace>
  • Vi 命令模式:<X><d,h>

BackwardDeleteLine

与 BackwardKillLine 类似,删除从该点到行开头的文本,但不会将已删除的文本置于剪贴环中。

  • Windows 模式:<Ctrl+Home>
  • Vi 插入模式:<Ctrl+u><Ctrl+Home>
  • Vi 命令模式:<Ctrl+u><Ctrl+Home><d,0>

BackwardDeleteWord

删除上一个单词。

  • Vi 命令模式:<Ctrl+w><d,b>

BackwardKillLine

清除从输入开始到游标的输入。 清除的文本放置在剪贴环中。

  • Emacs 模式:<Ctrl+u><Ctrl+x,Backspace>

BackwardKillWord

清除从当前单词的开头到游标的输入。 如果游标位于单词之间,则清除从上一个单词的开头到游标的输入。 清除的文本放置在剪贴环中。

  • Windows 模式:<Ctrl+Backspace>
  • Emacs 模式:<Alt+Backspace><Escape,Backspace>
  • Vi 插入模式:<Ctrl+Backspace>
  • Vi 命令模式:<Ctrl+Backspace>

CancelLine

取消当前输入,将输入留在屏幕上,但返回到主机,以便再次评估提示。

  • Vi 插入模式:<Ctrl+c>
  • Vi 命令模式:<Ctrl+c>

复制

将所选区域复制到系统剪贴板。 如果未选择任何区域,则复制整行。

  • Windows 模式:<Ctrl+C>

CopyOrCancelLine

如果选择文本,请复制到剪贴板,否则取消该行。

  • Windows 模式:<Ctrl+c>
  • Emacs 模式:<Ctrl+c>

剪切

删除在系统剪贴板中放置已删除文本的选定区域。

  • Windows 模式:<Ctrl+x>

DeleteChar

删除游标下的字符。

  • Windows 模式:<Delete>
  • Emacs 模式:<Delete>
  • Vi 插入模式:<Delete>
  • Vi 命令模式:<Delete><x><d,l><d,Space>

DeleteCharOrExit

删除游标下的字符,或如果该行为空,则会退出进程。

  • Emacs 模式:<Ctrl+d>

DeleteEndOfWord

删除至单词末尾。

  • Vi 命令模式:<d,e>

DeleteLine

删除当前行,启用撤消。

  • Vi 命令模式:<d,d>

DeleteLineToFirstChar

删除从游标到行的第一个非空白字符的文本。

  • Vi 命令模式:<d,^>

DeleteToEnd

删除至行尾。

  • Vi 命令模式:<D><d,$>

DeleteWord

删除下一个单词。

  • Vi 命令模式:<d,w>

ForwardDeleteLine

与 ForwardKillLine 类似,删除从该点到行末尾的文本,但不会将已删除的文本置于剪贴环中。

  • Windows 模式:<Ctrl+End>
  • Vi 插入模式:<Ctrl+End>
  • Vi 命令模式:<Ctrl+End>

InsertLineAbove

无论游标位于当前行上何处,都会在当前行上方创建新的空行。 游标移动到新行的开头。

  • Windows 模式:<Ctrl+Enter>

InsertLineBelow

无论游标位于当前行上何处,都会在当前行下方创建新的空行。 游标移动到新行的开头。

  • Windows 模式:<Shift+Ctrl+Enter>

InvertCase

反转当前字符的大小写,并移动到下一个字符。

  • Vi 命令模式:<~>

KillLine

清除从游标到输入末尾的输入。 清除的文本放置在剪贴环中。

  • Emacs 模式:<Ctrl+k>

KillRegion

剪贴游标和标记之间的文本。

  • 函数未绑定。

KillWord

清除从游标到当前单词末尾的输入。 如果游标位于单词之间,则清除从游标到下一个单词末尾的输入。 清除的文本放置在剪贴环中。

  • Windows 模式:<Ctrl+Delete>
  • Emacs 模式:<Alt+d><Escape,d>
  • Vi 插入模式:<Ctrl+Delete>
  • Vi 命令模式:<Ctrl+Delete>

粘贴

粘贴系统剪贴板中的文本。

  • Windows 模式:<Ctrl+v><Shift+Insert>
  • Vi 插入模式:<Ctrl+v>
  • Vi 命令模式:<Ctrl+v>

重要

使用 Paste 函数时,剪贴板缓冲区的全部内容将粘贴到 PSReadLine 的输入缓冲区中。 然后,输入缓冲区将传递给 PowerShell 分析器。 使用控制台应用程序的右键单击粘贴方法粘贴的输入会一次一个字符的复制到输入缓冲区。 复制换行符时,输入缓冲区将传递给分析程序。 因此,会一次分析一行输入。 粘贴方法之间的差异会导致不同的执行行为。

PasteAfter

将剪贴板粘贴到游标后,将游标移动到粘贴文本的末尾。

  • Vi 命令模式:<p>

PasteBefore

将剪贴板粘贴到游标之前,将游标移动到粘贴文本的末尾。

  • Vi 命令模式:<P>

PrependAndAccept

在前面添加一个“#”并接受该行。

  • Vi 命令模式:<#>

重做

撤消一个撤消操作。

  • Windows 模式:<Ctrl+y>
  • Vi 插入模式:<Ctrl+y>
  • Vi 命令模式:<Ctrl+y>

RepeatLastCommand

重复最后一个文本修改。

  • Vi 命令模式:<.>

RevertLine

将所有输入还原到当前输入。

  • Windows 模式:<Escape>
  • Emacs 模式:<Alt+r><Escape,r>

ShellBackwardKillWord

清除从当前单词的开头到游标的输入。 如果游标位于单词之间,则清除从上一个单词的开头到游标的输入。 清除的文本放置在剪贴环中。

函数未绑定。

ShellKillWord

清除从游标到当前单词末尾的输入。 如果游标位于单词之间,则清除从游标到下一个单词末尾的输入。 清除的文本放置在剪贴环中。

函数未绑定。

SwapCharacters

交换当前字符与其前一字符。

  • Emacs 模式:<Ctrl+t>
  • Vi 插入模式:<Ctrl+t>
  • Vi 命令模式:<Ctrl+t>

撤消

撤消上一次编辑。

  • Windows 模式:<Ctrl+z>
  • Emacs 模式:<Ctrl+_><Ctrl+x,Ctrl+u>
  • Vi 插入模式:<Ctrl+z>
  • Vi 命令模式:<Ctrl+z><u>

UndoAll

撤消以前对行所做的所有编辑。

  • Vi 命令模式:<U>

UnixWordRubout

清除从当前单词的开头到游标的输入。 如果游标位于单词之间,则清除从上一个单词的开头到游标的输入。 清除的文本放置在剪贴环中。

  • Emacs 模式:<Ctrl+w>

ValidateAndAcceptLine

尝试执行当前输入。 如果当前输入不完整(例如缺少闭括号、方括号或引号),则延续提示将显示在下一行,PSReadLine 等待键编辑当前输入。

  • Emacs 模式:<Ctrl+m>

ViAcceptLine

接受该行并切换到“插入”模式。

  • Vi 命令模式:<Enter>

ViAcceptLineOrExit

类似 Emacs 模式下的 DeleteCharOrExit,但接受行而不是删除字符。

  • Vi 插入模式:<Ctrl+d>
  • Vi 命令模式:<Ctrl+d>

ViAppendLine

在当前行下方插入新行。

  • Vi 命令模式:<o>

ViBackwardDeleteGlob

删除上一个单词,仅使用空格作为单词分隔符。

  • Vi 命令模式:<d,B>

ViBackwardGlob

将游标移回上一个单词开头,仅使用空格作为分隔符。

  • Vi 命令模式:<B>

ViDeleteBrace

查找匹配的大括号、圆括号或方括号,并删除其中的所有内容,包括大括号本身。

  • Vi 命令模式:<d,%>

ViDeleteEndOfGlob

删除至单词末尾。

  • Vi 命令模式:<d,E>

ViDeleteGlob

删除下一个 glob(空格分隔的单词)。

  • Vi 命令模式:<d,W>

ViDeleteToBeforeChar

删除直至给定字符。

  • Vi 命令模式:<d,t>

ViDeleteToBeforeCharBackward

删除直至给定字符。

  • Vi 命令模式:<d,T>

ViDeleteToChar

删除直至给定字符。

  • Vi 命令模式:<d,f>

ViDeleteToCharBackward

反向删除直至给定字符。

  • Vi 命令模式:<d,F>

ViInsertAtBegining

切换到“插入”模式,并将游标置于行的开头。

  • Vi 命令模式:<I>

ViInsertAtEnd

切换到“插入”模式,并将游标置于行的开头。

  • Vi 命令模式:<A>

ViInsertLine

在当前行上方插入新行。

  • Vi 命令模式:<O>

ViInsertWithAppend

从当前行位置追加。

  • Vi 命令模式:<a>

ViInsertWithDelete

删除当前字符并切换到“插入”模式。

  • Vi 命令模式:<s>

ViJoinLines

联接当前行和下一行。

  • Vi 命令模式:<J>

ViReplaceLine

擦除整个命令行。

  • Vi 命令模式:<S><c,c>

ViReplaceToBeforeChar

替换直至给定字符。

  • Vi 命令模式:<c,t>

ViReplaceToBeforeCharBackward

替换直至给定字符。

  • Vi 命令模式:<c,T>

ViReplaceToChar

删除直至给定字符。

  • Vi 命令模式:<c,f>

ViReplaceToCharBackward

替换直至给定字符。

  • Vi 命令模式:<c,F>

ViYankBeginningOfLine

从缓冲区开头粘贴到游标处。

  • Vi 命令模式:<y,0>

ViYankEndOfGlob

从游标处粘贴到词尾。

  • Vi 命令模式:<y,E>

ViYankEndOfWord

从游标处粘贴到词尾。

  • Vi 命令模式:<y,e>

ViYankLeft

将字符粘贴到游标左侧。

  • Vi 命令模式:<y,h>

ViYankLine

粘贴整个缓冲区。

  • Vi 命令模式:<y,y>

ViYankNextGlob

从游标处粘贴到到下一个单词的开头。

  • Vi 命令模式:<y,W>

ViYankNextWord

将单词粘贴到游标之后。

  • Vi 命令模式:<y,w>

ViYankPercent

从/向匹配大括号粘贴。

  • Vi 命令模式:<y,%>

ViYankPreviousGlob

从单词的开头粘贴到游标处。

  • Vi 命令模式:<y,B>

ViYankPreviousWord

将单词粘贴到游标之前。

  • Vi 命令模式:<y,b>

ViYankRight

将字符粘贴到游标下方和右侧。

  • Vi 命令模式:<y,l><y,Space>

ViYankToEndOfLine

从游标处粘贴到到缓冲区末尾。

  • Vi 命令模式:<y,$>

ViYankToFirstChar

从第一个非空格字符粘贴到游标处。

  • Vi 命令模式:<y,^>

粘贴

将最近剪贴的文本添加到输入。

  • Emacs 模式:<Ctrl+y>

YankLastArg

从上一个历史记录行中粘贴最后一个参数。 使用参数时,第一次调用它的行为类似 YankNthArg。 如果多次调用,则会循环访问历史记录,并使用 arg 设置方向(负数则反转方向)。

  • Windows 模式:<Alt+.>
  • Emacs 模式:<Alt+.><Alt+_><Escape,.><Escape,_>

YankNthArg

从上一个历史记录行粘贴第一个参数(命令后)。 使用参数时,粘贴第 n 个参数(从 0 开始),如果参数为负,则从最后一个参数开始。

  • Emacs 模式:<Ctrl+Alt+y><Escape,Ctrl+y>

YankPop

如果上一操作是 Yank 或 YankPop,请将之前粘贴的文本替换为剪贴环中的下一个剪贴文本。

  • Emacs 模式:<Alt+y><Escape,y>

游标移动函数

BackwardChar

将游标左移一个字符。 这可能会将游标移至多行输入中的上一行。

  • Windows 模式:<LeftArrow>
  • Emacs 模式:<LeftArrow><Ctrl+b>
  • Vi 插入模式:<LeftArrow>
  • Vi 命令模式:<LeftArrow><Backspace><h>

BackwardWord

将游标移回当前单词的开头,或如果在单词之间,则移至前一个单词的开头。 单词边界由一组可配置的字符定义。

  • Windows 模式:<Ctrl+LeftArrow>
  • Emacs 模式:<Alt+b><Escape,b>
  • Vi 插入模式:<Ctrl+LeftArrow>
  • Vi 命令模式:<Ctrl+LeftArrow>

定义单词边界的字符在 PSConsoleReadLineOptions 对象的 WordDelimiters 属性中配置。 若要查看或更改 WordDelimiters 属性,请参阅 Get-PSReadLineOptionSet-PSReadLineOption

BeginningOfLine

如果输入具有多行,则移动到当前行的开头,或者如果已在行的开头,则移动到输入的开头。 如果输入为单一行,则移动到输入的开头。

  • Windows 模式:<Home>
  • Emacs 模式:<Home><Ctrl+a>
  • Vi 插入模式:<Home>
  • Vi 命令模式:<Home>

EndOfLine

如果输入具有多行,则移动到当前行的末尾,或者如果已在行的末尾,则移动到输入的末尾。 如果输入为单一行,则移动到输入的末尾。

  • Windows 模式:<End>
  • Emacs 模式:<End><Ctrl+e>
  • Vi 插入模式:<End>

ForwardChar

将游标右移一个字符。 这可能会将游标移到多行输入中的下一行。

  • Windows 模式:<RightArrow>
  • Emacs 模式:<RightArrow><Ctrl+f>
  • Vi 插入模式:<RightArrow>
  • Vi 命令模式:<RightArrow><Space><l>

ForwardWord

将游标向前移动到当前单词的末尾,或者如果在单词之间,则移动至下一单词的末尾。 单词边界由一组可配置的字符定义。

  • Emacs 模式:<Alt+f><Escape,f>

定义单词边界的字符在 PSConsoleReadLineOptions 对象的 WordDelimiters 属性中配置。 若要查看或更改 WordDelimiters 属性,请参阅 Get-PSReadLineOptionSet-PSReadLineOption

GotoBrace

转到匹配的大括号、圆括号或方括号。

  • Windows 模式:<Ctrl+]>
  • Vi 插入模式:<Ctrl+]>
  • Vi 命令模式:<Ctrl+]>

GotoColumn

移至 arg 指示的列。

  • Vi 命令模式:<|>

GotoFirstNonBlankOfLine

将游标移至行中的第一个非空字符。

  • Vi 命令模式:<^>

MoveToEndOfLine

将游标移至输入的末尾。

  • Vi 命令模式:<End><$>

NextLine

将游标移至下一行。

  • 函数未绑定。

NextWord

将游标向前移动至下一个单词的开头。 单词边界由一组可配置的字符定义。

  • Windows 模式:<Ctrl+RightArrow>
  • Vi 插入模式:<Ctrl+RightArrow>
  • Vi 命令模式:<Ctrl+RightArrow>

定义单词边界的字符在 PSConsoleReadLineOptions 对象的 WordDelimiters 属性中配置。 若要查看或更改 WordDelimiters 属性,请参阅 Get-PSReadLineOptionSet-PSReadLineOption

NextWordEnd

将游标向前移动到当前单词的末尾,或者如果在单词之间,则移动至下一单词的末尾。 单词边界由一组可配置的字符定义。

  • Vi 命令模式:<e>

定义单词边界的字符在 PSConsoleReadLineOptions 对象的 WordDelimiters 属性中配置。 若要查看或更改 WordDelimiters 属性,请参阅 Get-PSReadLineOptionSet-PSReadLineOption

PreviousLine

将游标移至上一行。

  • 函数未绑定。

ShellBackwardWord

将游标移回当前单词的开头,或如果在单词之间,则移至前一个单词的开头。 单词边界由 PowerShell 令牌定义。

  • 函数未绑定。

ShellForwardWord

将游标向前移动至下一个单词的开头。 单词边界由 PowerShell 令牌定义。

  • 函数未绑定。

ShellNextWord

将游标向前移动到当前单词的末尾,或者如果在单词之间,则移动至下一单词的末尾。 单词边界由 PowerShell 令牌定义。

  • 函数未绑定。

ViBackwardWord

将游标移回当前单词的开头,或如果在单词之间,则移至前一个单词的开头。 单词边界由一组可配置的字符定义。

  • Vi 命令模式:<b>

定义单词边界的字符在 PSConsoleReadLineOptions 对象的 WordDelimiters 属性中配置。 若要查看或更改 WordDelimiters 属性,请参阅 Get-PSReadLineOptionSet-PSReadLineOption

ViEndOfGlob

将光标移至单词的末尾,仅使用空格作为分隔符。

  • Vi 命令模式:<E>

ViEndOfPreviousGlob

移至上一个单词的末尾,仅使用空格作为单词分隔符。

  • 函数未绑定。

ViGotoBrace

类似于 GotoBrace,但基于字符而不是基于令牌。

  • Vi 命令模式:<%>

ViNextGlob

移至下一个单词,仅使用空格作为单词分隔符。

  • Vi 命令模式:<W>

ViNextWord

将游标向前移动至下一个单词的开头。 单词边界由一组可配置的字符定义。

  • Vi 命令模式:<w>

定义单词边界的字符在 PSConsoleReadLineOptions 对象的 WordDelimiters 属性中配置。 若要查看或更改 WordDelimiters 属性,请参阅 Get-PSReadLineOptionSet-PSReadLineOption

历史记录函数

BeginningOfHistory

移至历史记录中的第一项。

  • Emacs 模式:<Alt+<>

ClearHistory

清除 PSReadLine 中的历史记录。 这不会影响 PowerShell 历史记录。

  • Windows 模式:<Alt+F7>

EndOfHistory

移至历史记录中的最后一项(当前输入)。

  • Emacs 模式:<Alt+>>

ForwardSearchHistory

通过历史记录执行增量转发搜索。

  • Windows 模式:<Ctrl+s>
  • Emacs 模式:<Ctrl+s>

HistorySearchBackward

将当前输入替换为 PSReadLine 历史记录中的“上一个”项,该项与开始和输入以及游标之间的字符匹配。

  • Windows 模式:<F8>

HistorySearchForward

将当前输入替换为 PSReadLine 历史记录中的“下一个”项,该项与开始和输入以及游标之间的字符匹配。

  • Windows 模式:<Shift+F8>

NextHistory

将当前输入替换为 PSReadLine 历史记录中的“下一个”项。

  • Windows 模式:<DownArrow>
  • Emacs 模式:<DownArrow><Ctrl+n>
  • Vi 插入模式:<DownArrow>
  • Vi 命令模式:<DownArrow><j><+>

PreviousHistory

将当前输入替换为 PSReadLine 历史记录中的“上一个”项。

  • Windows 模式:<UpArrow>
  • Emacs 模式:<UpArrow><Ctrl+p>
  • Vi 插入模式:<UpArrow>
  • Vi 命令模式:<UpArrow><k><->

ReverseSearchHistory

通过历史记录执行增量向后搜索。

  • Windows 模式:<Ctrl+r>
  • Emacs 模式:<Ctrl+r>

ViSearchHistoryBackward

提示搜索字符串,并在 AcceptLine 上启动搜索。

  • Vi 插入模式:<Ctrl+r>
  • Vi 命令模式:</><Ctrl+r>

完成函数

完成

尝试对游标周围的文本执行完成操作。 如果有多个可能的完成,则使用最长的明确前缀完成。 如果尝试完成最长的明确完成,则会显示可能的完成列表。

  • Emacs 模式:<Tab>

尝试对游标周围的文本执行完成操作。 如果有多个可能的完成,则使用最长的明确前缀完成。 如果尝试完成最长的明确完成,则会显示可能的完成列表。

  • Windows 模式:<Ctrl+Space>
  • Emacs 模式:<Ctrl+Space>

PossibleCompletions

显示可能的完成列表。

  • Emacs 模式:<Alt+=>
  • Vi 插入模式:<Ctrl+Space>
  • Vi 命令模式:<Ctrl+Space>

TabCompleteNext

尝试使用下一个可用完成完成光标周围的文本。

  • Windows 模式:<Tab>
  • Vi 命令模式:<Tab>

TabCompletePrevious

尝试使用上一个可用完成完成光标周围的文本。

  • Windows 模式:<Shift+Tab>
  • Vi 命令模式:<Shift+Tab>

ViTabCompleteNext

根据需要结束当前编辑组,并调用 TabCompleteNext。

  • Vi 插入模式:<Tab>

ViTabCompletePrevious

根据需要结束当前编辑组,并调用 TabCompletePrevious。

  • Vi 插入模式:<Shift+Tab>

其他功能

CaptureScreen

启动交互式屏幕捕获,使用向上/向下箭头选择行,输入所选文本作为文本和 HTML 复制到剪贴板。

  • 函数未绑定。

ClearScreen

清除屏幕并在屏幕顶部绘制当前行。

  • Windows 模式:<Ctrl+l>
  • Emacs 模式:<Ctrl+l>
  • Vi 插入模式:<Ctrl+l>
  • Vi 命令模式:<Ctrl+l>

DigitArgument

启动要传递给其他函数的新数字参数。 可以将它用作由按键触发调用的下一个函数的乘数。 例如,按<Alt+1><Alt+0>数字参数值设置为 10。 然后,按 # 键会将 10 # 字符 (##########) 发送到输入行。 同样,可以将此项用于其他操作,例如 <Delete>Left-Arrow

  • Windows 模式:<Alt+0><Alt+1><Alt+2><Alt+3><Alt+4><Alt+5><Alt+6><Alt+7><Alt+8><Alt+9><Alt+->
  • Emacs 模式:<Alt+0><Alt+1><Alt+2><Alt+3><Alt+4><Alt+5><Alt+6><Alt+7><Alt+8><Alt+9><Alt+->
  • Vi 命令模式:<0><1><2><3><4><5><6><7><8><9>

InvokePrompt

尝试擦除当前提示并调用提示函数以重新显示提示。 适用于更改状态的自定义键处理程序。 例如,更改当前目录。 此方法无法覆盖已离开屏幕缓冲区的提示。 InvokePrompt如果无法覆盖提示,则立即返回不Y带位置参数的调用。

  • 函数未绑定。

ScrollDisplayDown

将显示向下滚动一个屏幕。

  • Windows 模式:<PageDown>
  • Emacs 模式:<PageDown>

ScrollDisplayDownLine

将显示向下滚动一行。

  • Windows 模式:<Ctrl+PageDown>
  • Emacs 模式:<Ctrl+PageDown>

ScrollDisplayToCursor

将显示滚动到游标处。

  • Emacs 模式:<Ctrl+End>

ScrollDisplayTop

将显示滚动到顶部。

  • Emacs 模式:<Ctrl+Home>

ScrollDisplayUp

将显示向上滚动一个屏幕。

  • Windows 模式:<PageUp>
  • Emacs 模式:<PageUp>

ScrollDisplayUpLine

将显示向上滚动一行。

  • Windows 模式:<Ctrl+PageUp>
  • Emacs 模式:<Ctrl+PageUp>

SelfInsert

插入键。

  • 函数未绑定。

ShowKeyBindings

显示所有绑定键。

  • Windows 模式:<Ctrl+Alt+?>
  • Emacs 模式:<Ctrl+Alt+?>
  • Vi 插入模式:<Ctrl+Alt+?>

ViCommandMode

将当前操作模式从 Vi 插入切换到 Vi 命令。

  • Vi 插入模式:<Escape>

ViDigitArgumentInChord

在 vi 的按键组合之一中启动新数字参数,以传递给其他函数。

  • 函数未绑定。

ViEditVisually

在由 $Env:EDITOR$Env:VISUAL 指定的文本编辑器中编辑命令行。

  • Emacs 模式:<Ctrl+x,Ctrl+e>
  • Vi 命令模式:<v>

ViExit

退出 shell。

  • 函数未绑定。

ViInsertMode

切换到“插入”模式。

  • Vi 命令模式:<i>

WhatIsKey

读取密钥并告诉我密钥与什么内容绑定。

  • Windows 模式:<Alt+?>
  • Emacs 模式:<Alt+?>

选择函数

ExchangePointAndMark

游标放置在标记的位置,标记将移至游标的位置。

  • Emacs 模式:<Ctrl+x,Ctrl+x>

SelectAll

选择整行。

  • Windows 模式:<Ctrl+a>

SelectBackwardChar

调整当前所选内容以包含上一个字符。

  • Windows 模式:<Shift+LeftArrow>
  • Emacs 模式:<Shift+LeftArrow>

SelectBackwardsLine

调整当前所选内容,以包含从游标到行的开头的内容。

  • Windows 模式:<Shift+Home>
  • Emacs 模式:<Shift+Home>

SelectBackwardWord

调整当前所选内容以包含上一个单词。

  • Windows 模式:<Shift+Ctrl+LeftArrow>
  • Emacs 模式:<Alt+B>

SelectForwardChar

调整当前所选内容以包含下一个字符。

  • Windows 模式:<Shift+RightArrow>
  • Emacs 模式:<Shift+RightArrow>

SelectForwardWord

调整当前所选内容以使用 ForwardWord 包含下一个单词。

  • Emacs 模式:<Alt+F>

SelectLine

调整当前所选内容,以包含从游标到行末尾的内容。

  • Windows 模式:<Shift+End>
  • Emacs 模式:<Shift+End>

SelectNextWord

调整当前所选内容以包含下一个单词。

  • Windows 模式:<Shift+Ctrl+RightArrow>

SelectShellBackwardWord

调整当前所选内容以使用 ShellBackwardWord 包含上一个单词。

  • 函数未绑定。

SelectShellForwardWord

调整当前所选内容以使用 ShellForwardWord 包含下一个单词。

  • 函数未绑定。

SelectShellNextWord

调整当前所选内容以使用 ShellNextWord 包含下一个单词。

  • 函数未绑定。

SetMark

标记游标的当前位置,以便在后续编辑命令中使用。

  • Emacs 模式:<Ctrl+>

搜索函数

CharacterSearch

读取字符并向前搜索该字符的下一个匹配项。 如果指定了参数,则向前(如果为负则向后)搜索第 n 个匹配项。

  • Windows 模式:<F3>
  • Emacs 模式:<Ctrl+]>
  • Vi 插入模式:<F3>
  • Vi 命令模式:<F3>

CharacterSearchBackward

读取字符并向后搜索该字符的下一个匹配项。 如果指定了参数,则向后(如果为负则向前)搜索第 n 个匹配项。

  • Windows 模式:<Shift+F3>
  • Emacs 模式:<Ctrl+Alt+]>
  • Vi 插入模式:<Shift+F3>
  • Vi 命令模式:<Shift+F3>

RepeatLastCharSearch

重复上次记录的字符搜索。

  • Vi 命令模式:<;>

RepeatLastCharSearchBackwards

重复上次记录的字符搜索,但方向相反。

  • Vi 命令模式:<,>

RepeatSearch

按照与之前相同的方向重复上次搜索。

  • Vi 命令模式:<n>

RepeatSearchBackward

按照与之前相同的方向重复上次搜索。

  • Vi 命令模式:<N>

SearchChar

阅读下一个字符,然后找到它,前进。

  • Vi 命令模式:<f>

SearchCharBackward

读取下一个字符,然后找到它,向后移动。

  • Vi 命令模式:<F>

SearchCharBackwardWithBackoff

读取下一个字符,然后找到它,向后回退,然后返回一个字符。

  • Vi 命令模式:<T>

SearchCharWithBackoff

读取下一个字符,然后找到它,继续向前,然后返回一个字符。

  • Vi 命令模式:<t>

SearchForward

提示搜索字符串,并在 AcceptLine 上启动搜索。

  • Vi 插入模式:<Ctrl+s>
  • Vi 命令模式:<?><Ctrl+s>

自定义密钥绑定支持 API

以下函数在 Microsoft.PowerShell.PSConsoleReadLine 中是公共的,但不能直接绑定到键。 大多数在自定义键绑定中都很有用。

void AddToHistory(string command)

将命令行添加到历史记录中,而无需执行它。

void ClearKillRing()

清除剪贴环。 这主要用于测试。

void Delete(int start, int length)

从头开始删除长度字符。 此操作支持撤消/重做。

void Ding()

根据用户的首选项执行 Ding 操作。

void GetBufferState([ref] string input, [ref] int cursor)
void GetBufferState([ref] Ast ast, [ref] Token[] tokens,
  [ref] ParseError[] parseErrors, [ref] int cursor)

这两个函数检索有关输入缓冲区的当前状态的有用信息。 第一个更常用于简单情况。 如果绑定使用 Ast 执行更高级的内容,则使用第二个。

IEnumerable[Microsoft.PowerShell.KeyHandler]
  GetKeyHandlers(bool includeBound, bool includeUnbound)

此函数由 Get-PSReadLineKeyHandler 使用,在自定义键绑定中可能没有用处。

Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()

此函数由 Get-PSReadLineOption 使用,在自定义键绑定中可能不太有用。

void GetSelectionState([ref] int start, [ref] int length)

如果命令行上没有选择,则该函数将返回 -1(以开头和长度为单位)。 如果命令行上有选定内容,则返回所选内容的开始和长度。

void Insert(char c)
void Insert(string s)

在游标处插入字符或字符串。 此操作支持撤消/重做。

string ReadLine(runspace remoteRunspace,
  System.Management.Automation.EngineIntrinsics engineIntrinsics)

这是 PSReadLine 的主要入口点。 它不支持递归,因此在自定义键绑定中不起作用。

void RemoveKeyHandler(string[] key)

此函数由 Remove-PSReadLineKeyHandler 使用,在自定义键绑定中可能不太有用。

void Replace(int start, int length, string replacement)

替换某些输入。 此操作支持撤消/重做。 这比先删除再插入更受青睐,因为它被视为撤销的单个操作。

void SetCursorPosition(int cursor)

将游标移动到给定偏移处。 游标移动不会被跟踪以用于撤消。

void SetOptions(Microsoft.PowerShell.SetPSReadLineOption options)

此函数是 cmdlet Set-PSReadLineOption 使用的帮助程序方法,但对于想要暂时更改设置的自定义键绑定可能很有用。

bool TryGetArgAsInt(System.Object arg, [ref] int numericArg,
  int defaultNumericArg)

此帮助程序方法用于遵循 DigitArgument 的自定义绑定。 典型的调用如下所示

[int]$numericArg = 0
[Microsoft.PowerShell.PSConsoleReadLine]::TryGetArgAsInt($arg,
  [ref]$numericArg, 1)

注释

OnIdle 事件的行为

  • 当正在使用 PSReadLine 时,OnIdle 事件会在 ReadKey() 超时(300 毫秒内无键入)时触发。 当用户正进行命令行编辑时,该事件可能会发出信号,例如,用户正在阅读帮助来确定要使用的参数。

    从 PSReadLine 2.2.0-beta4 开始,OnIdle 行为更改为仅当存在 ReadKey() 超时且当前编辑缓冲区为空时,事件才会发出信号。

另请参阅