当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 关于 PSReadLine 函数

作者:精品下载站 日期:2024-12-14 02:00:27 浏览:15 分类:玩电脑

关于 PSReadLine 函数


简短描述

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

详细说明

PowerShell 7.3 附带 PSReadLine 2.2.6。当前版本是 PSReadLine 2.3.4。当前版本的 PSReadLine 可以在 Windows PowerShell 5.1 及更高版本上安装和使用。对于某些功能,您需要运行 PowerShell 7.2 或更高版本。

本文记录了 PSReadLine 2.3.4 提供的功能。这些功能可以绑定到按键,以便于访问和调用。

使用 Microsoft.PowerShell.PSConsoleReadLine 类

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

基本编辑功能

中止

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

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

接受并获取下一步

尝试执行当前输入。如果可以执行(如 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>

向后删除字符

删除光标前的字符。

  • Windows 模式:退格键Ctrl+h
  • Emacs 模式:BackspaceCtrl+BackspaceCtrl+h
  • Vi 插入模式:退格键
  • Vi 命令模式:<X><d,h>

向后删除输入

与 BackwardKillInput 类似 - 删除从输入点到开头的文本,但不会将删除的文本放入终止环中。

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

向后删除行

与 BackwardKillLine 类似 - 删除从该点到行开头的文本,但不会将删除的文本放入终止环中。

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

向后删除单词

删除前一个单词。

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

向后终止输入

清除从输入开始到光标处的文本。清除的文本被放置在终止环中。

  • Emacs 模式:Ctrl+uCtrl+x、Backspace

后向杀伤线

清除从当前逻辑行开头到光标处的文本。清除的文本被放置在终止环中。

  • 函数未绑定。

向后杀字

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

  • Windows 模式:Ctrl+BackspaceCtrl+w
  • Emacs 模式:Alt+BackspaceEscape、Backspace
  • Vi 插入模式:Ctrl+Backspace
  • Vi 命令模式:<Ctrl+Backspace>

向后替换字符

替换光标前面的字符。

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

CancelLine

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

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

CapitalizeWord

PSReadLine 2.3.0 中添加

将下一个单词的第一个字符转换为大写,其余字符转换为小写。

  • Emacs 模式:Alt+cEscape,c

复制

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

  • Windows 模式:Ctrl+C

复制或取消行

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

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

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

  • Windows 模式:Ctrl+x

DeleteChar

删除光标下的字符。

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

删除字符或退出

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

  • Emacs 模式:Ctrl+d

删除缓冲区末尾

删除到多行缓冲区的末尾。

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

删除字尾

删除到单词末尾。

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

DeleteLine

删除多行缓冲区的当前逻辑行,从而启用撤消操作。

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

删除行到第一个字符

从多行缓冲区中当前逻辑行的第一个非空白字符开始删除。

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

删除下一行

删除多行缓冲区中的当前和下 n 个逻辑行。

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

删除前行

删除多行缓冲区中先前请求的逻辑行和当前逻辑行。

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

删除相关行

在多行缓冲区中从缓冲区的开头删除到当前逻辑行。

与大多数 Vi 命令一样,<d,g,g> 命令可以在前面添加一个指定绝对行号的数字参数,该绝对行号与当前行号一起构成一系列行被删除。如果未指定,数字参数默认为 1,它指的是多行缓冲区中的第一个逻辑行。

要从多行中删除的实际行数计算为当前逻辑行号与指定数字参数之间的差,因此该数字参数可以为负数。因此是方法名称的相对部分。

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

删除至结束

删除到行尾。

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

DeleteWord

删除下一个单词。

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

DowncaseWord

PSReadLine 2.3.0 中添加

将下一个单词转换为小写。

  • Emacs 模式:Alt+lEscape,l

转发删除输入

与 KillLine 类似 - 删除从输入点到末尾的文本,但不会将删除的文本放入 Kill-ring 中。

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

转发删除行

删除从当前逻辑行的点到结尾的文本,但不将删除的文本放入终止环中。

  • 函数未绑定

在上方插入行

无论光标位于当前行的哪个位置,都会在当前行上方创建一个新的空行。光标移动到新行的开头。

  • Windows 模式:Ctrl+Enter

下面插入行

无论光标位于当前行的哪个位置,都会在当前行下方创建一个新的空行。光标移动到新行的开头。

  • Windows 模式:Shift+Ctrl+Enter

InvertCase

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

  • Vi 命令模式: <~>

KillLine

清除从光标处到输入末尾的输入。清除的文本被放置在终止环中。

  • Emacs 模式:Ctrl+k

KillRegion

删除光标和标记之间的文本。

  • 函数未绑定。

KillWord

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

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

粘贴

从系统剪贴板粘贴文本。

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

这很重要

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

PasteAfter

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

  • Vi 命令模式: <p>

PasteBefore

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

  • Vi 命令模式: <P>

前置并接受

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

  • Vi 命令模式:<#>

重做

撤消撤消。

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

重复上一个命令

重复上次的文本修改。

  • Vi 命令模式:<.>

ReplaceChar

将当前字符替换为下一组键入的字符。

  • Vi 命令模式:<c,l><c,Spacebar>

就地替换字符

仅用一个字符替换当前字符。

  • Vi 命令模式: <r>

RevertLine

将所有输入恢复为当前输入。

  • Windows 模式:Escape
  • Emacs 模式:Alt+rEscape,r

Shell向后KillWord

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

函数未绑定。

Shell杀字

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

函数未绑定。

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>

UnixWordRoutout

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

  • Emacs 模式:Ctrl+w

UpcaseWord

PSReadLine 2.3.0 中添加

将下一个单词转换为大写。

  • Emacs 模式:Alt+uEscape,u

验证并接受行

尝试执行当前输入。如果当前输入不完整(例如缺少右括号、方括号或引号),则下一行会显示继续提示,并且 PSReadLine 等待按键来编辑当前输入。

  • Emacs 模式:Ctrl+m

Vi接受线

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

  • Vi 命令模式:<Enter>

Vi接受线路或退出

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

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

维追加行

新行将插入到当前行下方。

  • Vi 命令模式: <o>

Vi向后删除Glob

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

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

Vi向后全局

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

  • Vi 命令模式: <B>

Vi向后替换Glob

向后删除到上一个单词的开头(以空格分隔),然后进入插入模式。

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

Vi向后替换线

替换光标左侧的行并一直替换到开头。

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

Vi向后替换行到第一个字符

将光标左侧的行以及除一个字符以外的所有字符替换到该行的开头。

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

Vi向后替换单词

替换前面的单词。

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

Vi删除大括号

找到匹配的大括号、括号或方括号,然后删除其中的所有内容,包括大括号。

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

ViDeleteEndOfGlob

删除到单词末尾。

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

ViDeleteGlob

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

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

ViDeleteToBeforeChar

删除直到给定字符。

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

ViDeleteToBeforeCharBackward

删除直到给定字符。

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

删除字符

删除直到给定字符。

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

ViDeleteToChar向后

向后删除直到给定字符。

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

Vi在开始处插入

切换到插入模式并将光标置于行首。

  • Vi 命令模式: <I>

Vi在结束时插入

切换到插入模式并将光标定位在行尾。

  • Vi 命令模式:<A>

Vi插入线

新行将插入到当前行上方。

  • Vi 命令模式:<O>

ViInsertWithAppend 函数

从当前行位置追加。

  • Vi 命令模式:<a>

Vi插入与删除

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

  • Vi 命令模式:<s>

维联线

连接当前行和下一行。

  • Vi 命令模式: <J>

Vi替换支具

替换当前大括号字符与其匹配伙伴之间的所有字符。

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

ViReplaceEndOfGlob

删除到单词末尾(以空格分隔),然后进入插入模式。

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

Vi替换词尾

删除到单词末尾(由空格和公共分隔符分隔),然后进入插入模式。

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

Vi替换全局变量

删除到下一个单词的开头(以空格分隔),然后进入插入模式。

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

Vi替换线

删除整个命令行。

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

ViReplaceToBeforeChar

替换直到给定字符。

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

ViReplaceToBeforeCharBackward

替换直到给定字符。

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

Vi替换字符

删除直到给定字符。

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

ViReplaceToChar向后

替换直到给定字符。

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

Vi替换到结束

替换从光标位置到行尾的字符。

  • Vi 命令模式:<c,$><C>

Vi替换直到Esc

替换当前字符,直到输入转义符或该行被接受。

  • Vi 命令模式: <r>

Vi替换单词

替换当前单词。

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

ViYank行首

从缓冲区的开头拉到光标处。

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

ViYankEndOfGlob

从光标拉到单词末尾。

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

ViYank 词尾

从光标拉到单词末尾。

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

维扬克左

将字符拉到光标左侧。

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

维扬克线

猛拉整个缓冲区。

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

ViYankNextGlob

从光标拉到下一个单词的开头。

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

ViYank下一个词

拉出光标后的单词。

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

维扬克百分比

拉入/拉出匹配的支架。

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

ViYank上一个Glob

从单词开头拉到光标处。

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

ViYank上一个词

拉出光标之前的单词。

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

维扬克右

拖动光标下方和右侧的字符。

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

ViYank 到行尾

从光标拉到缓冲区末尾。

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

ViYankToFirstChar

从第一个非空白字符拉到光标处。

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

扬克

将最近删除的文本添加到输入中。

  • Emacs 模式:Ctrl+y

复制最后一个参数

从上一条历史记录中删除最后一个参数。对于参数,第一次调用它时,其行为就像 YankNthArg 一样。如果多次调用,它将遍历历史记录并 arg 设置方向(负数反转方向。)

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

扬克NthArg

从上一个历史记录行中提取第一个参数(在命令之后)。如果有参数,则拉出第 n 个参数(从 0 开始),如果参数为负数,则从最后一个参数开始。

  • Emacs 模式:Ctrl+Alt+yEscape,Ctrl+y

YankPop

如果先前的操作是 Yank 或 YankPop,则将先前的 yank 文本替换为 Kill-ring 中的下一个被杀死的文本。

  • Emacs 模式:Alt+yEscape,y

完成功能

完全的

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

  • Emacs 模式:Tab

MenuComplete

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

  • Windows 模式:Ctrl+@Ctrl+空格键
  • Emacs 模式:Ctrl+空格键

PossibleCompletions

显示可能完成的列表。

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

Tab完成下一个

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

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

Tab完整上一页

尝试使用先前可用的完成方式来完成光标周围的文本。

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

ViTabCompleteNext

如果需要,结束当前编辑组,并调用 TabCompleteNext。

  • Vi 插入模式:Tab

ViTabComplete上一页

如果需要,结束当前编辑组,并调用 TabCompletePrevious。

  • Vi 插入模式:Shift+Tab

光标移动功能

BackwardChar

将光标向左移动一个字符。这可能会将光标移动到多行输入的上一行。

  • Windows 模式:LeftArrow
  • Emacs 模式:LeftArrowCtrl+b

BackwardWord

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

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

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

行首

如果输入有多行,则移至当前行的开头,或者如果已位于行的开头,则移至输入的开头。如果输入只有一行,则移至输入的开头。

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

行尾

如果输入有多行,则移至当前行的末尾,或者如果已位于行末尾,则移至输入的末尾。如果输入只有一行,则移动到输入的末尾。

  • Windows 模式:结束
  • Emacs 模式:EndCtrl+e
  • Vi 插入模式: End

ForwardChar

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

  • Windows 模式:RightArrow
  • Emacs 模式:RightArrowCtrl+f

ForwardWord

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

  • Emacs 模式:Alt+fEscape,f

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

GotoBrace

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

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

GotoColumn

移至 arg 指示的列。

  • Vi 命令模式: <|>

转到第一个非空白行

将光标移动到该行中的第一个非空白字符。

  • Vi 命令模式:<^><_>

移至行尾

将光标移动到输入的末尾。

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

移至第一行

转到多行命令中的第一行。

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

移至最后一行

转到多行命令中的最后一行。

  • Vi 命令模式: <G>

NextLine

将光标移至下一行。

  • 函数未绑定。

NextWord

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

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

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

下一个词结束

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

  • Vi 命令模式:<e>

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

PreviousLine

将光标移至上一行。

  • 函数未绑定。

Shell向后字

将光标移回当前单词的开头,或者如果在单词之间,则移回上一个单词的开头。单词边界由 PowerShell 标记定义。

  • 函数未绑定。

ShellForwardWord

将光标向前移动到下一个单词的开头。单词边界由 PowerShell 标记定义。

  • 函数未绑定。

Shell下一个字

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

  • 函数未绑定。

Vi向后字符

在 Vi 编辑模式下将光标向左移动一个字符。这可能会将光标移动到多行输入的上一行。

  • Vi 插入模式:LeftArrow
  • Vi 命令模式:<LeftArrow><Backspace><h>

Vi向后字

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

  • Vi 命令模式: <b>

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

全局虚拟

将光标移动到该单词的末尾,以空格分隔。

  • Vi 命令模式: <E>

ViEndOfPreviousGlob

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

  • 函数未绑定。

虚拟转发字符

在 Vi 编辑模式下将光标向右移动一个字符。这可能会将光标移动到多行输入的下一行。

  • Vi 插入模式:RightArrow
  • Vi 命令模式:<RightArrow><Spacebar><l>

维后托支具

与 GotoBrace 类似,但基于字符而不是基于标记。

  • Vi 命令模式:<%>

ViNextGlob

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

  • Vi 命令模式:<W>

Vi下一个词

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

  • Vi 命令模式: <w>

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

历史功能

历史的开端

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

  • Emacs 模式:Alt+# 键将 10 个 # 字符 (##########) 发送到输入行。同样,您可以将其与其他操作一起使用,例如 <Delete>Left-Arrow
    • Windows 模式:Alt+0Alt+1Alt+2Alt+3 Alt+4Alt+5Alt+6Alt+7Alt+8 >、Alt+9Alt+-
    • Emacs 模式:Alt+0Alt+1Alt+2Alt+3 Alt+4Alt+5Alt+6Alt+7Alt+8 >、Alt+9Alt+-
    • Vi命令模式:<0><1><2><3>,

    InvokePrompt

    擦除当前提示并调用提示函数重新显示提示。对于更改状态的自定义键处理程序很有用。例如,更改当前目录。

    • 函数未绑定。

    向下滚动显示

    将显示屏向下滚动一屏。

    • Windows 模式:PageDown
    • Emacs 模式:PageDown

    下线滚动显示

    将显示向下滚动一行。

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

    滚动显示到光标

    将显示滚动到光标处。

    • Emacs 模式:Ctrl+End

    滚动显示顶部

    将显示滚动到顶部。

    • Emacs 模式:Ctrl+Home

    向上滚动显示

    将显示向上滚动一屏。

    • Windows 模式:PageUp
    • Emacs 模式:PageUp

    滚动显示上行

    将显示向上滚动一行。

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

    显示命令帮助

    提供完整 cmdlet 帮助的视图。当光标位于完全展开的参数末尾时,按 <F1> 键会将帮助显示定位在该参数的位置。

    使用 Microsoft.PowerShell.Pager 中的寻呼机将帮助显示在备用屏幕缓冲区上。当您退出寻呼机时,您将返回到原始屏幕上的原始光标位置。此寻呼机仅适用于现代终端应用程序,例如 Windows 终端。

    • Windows 模式:F1
    • Emacs 模式:F1
    • Vi 插入模式:F1
    • Vi 命令模式:<F1>

    显示按键绑定

    显示所有绑定键。

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

    显示参数帮助

    通过在当前命令行下方显示参数来提供参数的动态帮助,如 MenuComplete。当您按 <Alt+h> 键时,光标必须位于完全展开的参数名称的末尾。

    • Windows 模式:Alt+h
    • Emacs 模式:Alt+h
    • Vi 插入模式:Alt+h
    • Vi 命令模式:<Alt+h>

    Vi命令模式

    将当前操作模式从 Vi-Insert 切换到 Vi-Command。

    • Vi 插入模式:Escape

    ViDigitArgumentIn和弦

    在 vi 的和弦之一中启动一个新的数字参数以传递给其他函数。

    • 函数未绑定。

    ViEdit可视化

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

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

    ViExit

    退出外壳。

    • 函数未绑定。

    Vi插入模式

    切换到插入模式。

    • Vi 命令模式:<i>

    什么是关键

    读取密钥并告诉我该密钥绑定到什么。

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

    预测功能

    接受下一个建议词

    接受内联或选定建议的下一个单词

    • 函数未绑定。

    AcceptSuggestion

    当使用 InlineView 作为预测的视图样式时,接受当前的内联建议。

    • 函数未绑定。

    NextSuggestion

    使用 ListView 作为预测的视图样式时,导航到列表中的下一个建议。

    • 函数未绑定。

    PreviousSuggestion

    使用 ListView 作为预测的视图样式时,导航到列表中的上一个建议。

    • 函数未绑定。

    显示完整预测工具提示

    在完整视图中显示当前选定列表项的工具提示。

    • Windows 模式:F4
    • Emacs 模式:F4
    • Vi 插入模式:F4

    切换预测视图

    InlineViewListView 之间切换预测视图样式。

    • Windows 模式:F2
    • Emacs 模式:F2
    • Vi 插入模式:F2

    搜索功能

    CharacterSearch

    读取一个字符并向前搜索该字符的下一个出现位置。如果指定了参数,则向前搜索(如果为负则向后搜索)第 n 次出现。

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

    字符搜索向后

    读取一个字符并向后搜索该字符的下一个出现位置。如果指定了参数,则向后搜索(如果为负则向前搜索)第 n 次出现。

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

    重复最后一个字符搜索

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

    • Vi 命令模式:<;>

    向后重复最后一个字符搜索

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

    • Vi 命令模式: <,>

    RepeatSearch

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

    • Vi 命令模式: <n>

    向后重复搜索

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

    • Vi 命令模式:<N>

    SearchChar

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

    • Vi 命令模式: <f>

    向后搜索字符

    读取下一个字符,然后向后查找它。

    • Vi 命令模式:<F>

    SearchCharBackWithBackoff

    读取下一个字符,然后向后查找,然后后退一个字符。

    • Vi 命令模式: <T>

    带退避的搜索字符

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

    • Vi 命令模式:<t>

    SearchForward

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

    • Vi 命令模式: <?>

    选择功能

    交换点和标记

    将光标放置在标记的位置,并将标记移动到光标的位置。

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

    SelectAll

    选择整行。

    • Windows 模式:Ctrl+a

    选择向后字符

    调整当前选择以包括前一个字符。

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

    选择向后行

    调整当前选择以包括从光标到行首的位置。

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

    选择后向词

    调整当前选择以包含前一个单词。

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

    选择命令参数

    对命令参数进行可视化选择。参数的选择范围在脚本块内。根据光标位置,它从最里面的脚本块到最外面的脚本块进行搜索,并在脚本块范围内找到任何参数时停止。

    此函数遵循 DigitArgument。它将正或负参数值视为距当前选定参数的向前或向后偏移量,或者在未选择参数时距当前光标位置的向前或向后偏移量。

    • Windows 模式:Alt+a
    • Emacs 模式:Alt+a

    选择转发字符

    调整当前选择以包括下一个字符。

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

    选择转发词

    使用 ForwardWord 调整当前选择以包括下一个单词。

    • Emacs 模式:Alt+F

    SelectLine

    调整当前选择以包括从光标到行尾的内容。

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

    选择下一个词

    调整当前选择以包括下一个单词。

    • Windows 模式:Shift+Ctrl+RightArrow

    选择Shell向后词

    使用 ShellBackwardWord 调整当前选择以包括前一个单词。

    • 函数未绑定。

    选择ShellForwardWord

    使用 ShellForwardWord 调整当前选择以包括下一个单词。

    • 函数未绑定。

    选择外壳下一个单词

    使用 ShellNextWord 调整当前选择以包括下一个单词。

    • 函数未绑定。

    SetMark

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

    • Emacs 模式:Ctrl+@

    自定义按键绑定支持 API

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

    void AddToHistory(string command)
    

    将命令行添加到历史记录而不执行它。

    void ClearKillRing()
    

    清除杀戮环。这主要用于测试。

    void Delete(int start, int length)
    

    从开头删除 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)
    
    IEnumerable[Microsoft.PowerShell.KeyHandler]
      GetKeyHandlers(string[] Chord)
    

    这两个函数由 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 时,当 ReadKey() 超时(300 毫秒内没有输入)时,将触发 OnIdle 事件。当用户正在编辑命令行时,可以发出该事件信号,例如,用户正在阅读帮助来决定使用哪个参数。

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

    参见

    • about_PSReadLine

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯