[玩转系统] 关于 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 模式:
Backspace
、Ctrl+Backspace
、Ctrl+h
- Vi 插入模式:
退格键
- Vi 命令模式:
<X>
、<d,h>
向后删除输入
与 BackwardKillInput 类似 - 删除从输入点到开头的文本,但不会将删除的文本放入终止环中。
- Windows 模式:
Ctrl+Home
- Vi 插入模式:
Ctrl+u
、Ctrl+Home
- Vi 命令模式:
<Ctrl+u>
、<Ctrl+Home>
向后删除行
与 BackwardKillLine 类似 - 删除从该点到行开头的文本,但不会将删除的文本放入终止环中。
- Vi 命令模式:
<d,0>
向后删除单词
删除前一个单词。
- Vi 命令模式:
<Ctrl+w>
、<d,b>
向后终止输入
清除从输入开始到光标处的文本。清除的文本被放置在终止环中。
- Emacs 模式:
Ctrl+u
、Ctrl+x、Backspace
后向杀伤线
清除从当前逻辑行开头到光标处的文本。清除的文本被放置在终止环中。
- 函数未绑定。
向后杀字
清除从当前单词开头到光标处的输入。如果光标位于单词之间,则清除从上一个单词的开头到光标的输入。清除的文本被放置在终止环中。
- Windows 模式:
Ctrl+Backspace
、Ctrl+w
- Emacs 模式:
Alt+Backspace
、Escape、Backspace
- Vi 插入模式:
Ctrl+Backspace
- Vi 命令模式:
<Ctrl+Backspace>
向后替换字符
替换光标前面的字符。
- Vi 命令模式:
<c,h>
CancelLine
取消当前输入,将输入保留在屏幕上,但返回主机,以便再次评估提示。
- Vi 插入模式:
Ctrl+c
- Vi 命令模式:
<Ctrl+c>
CapitalizeWord
PSReadLine 2.3.0 中添加
将下一个单词的第一个字符转换为大写,其余字符转换为小写。
- Emacs 模式:
Alt+c
、Escape,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+l
、Escape,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+d
、Ctrl+Delete
- Emacs 模式:
Alt+d
、Escape,d
- Vi 插入模式:
Ctrl+Delete
- Vi 命令模式:
<Ctrl+Delete>
粘贴
从系统剪贴板粘贴文本。
- Windows 模式:
Ctrl+v
、Shift+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+r
、Escape,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+u
、Escape,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+y
、Escape,Ctrl+y
YankPop
如果先前的操作是 Yank 或 YankPop,则将先前的 yank 文本替换为 Kill-ring 中的下一个被杀死的文本。
- Emacs 模式:
Alt+y
、Escape,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 模式:
LeftArrow
、Ctrl+b
BackwardWord
将光标移回当前单词的开头,或者如果在单词之间,则移回上一个单词的开头。字边界由一组可配置的字符定义。
- Windows 模式:
Ctrl+LeftArrow
- Emacs 模式:
Alt+b
、Escape,b
- Vi 插入模式:
Ctrl+LeftArrow
- Vi 命令模式:
<Ctrl+LeftArrow>
定义单词边界的字符在 PSConsoleReadLineOptions 对象的 WordDelimiters 属性中配置。要查看或更改 WordDelimiters 属性,请参阅 Get-PSReadLineOption 和 Set-PSReadLineOption。
行首
如果输入有多行,则移至当前行的开头,或者如果已位于行的开头,则移至输入的开头。如果输入只有一行,则移至输入的开头。
- Windows 模式:
主页
- Emacs 模式:
Home
、Ctrl+a
- Vi 插入模式:
Home
- Vi 命令模式:
<Home>
行尾
如果输入有多行,则移至当前行的末尾,或者如果已位于行末尾,则移至输入的末尾。如果输入只有一行,则移动到输入的末尾。
- Windows 模式:
结束
- Emacs 模式:
End
、Ctrl+e
- Vi 插入模式:
End
ForwardChar
将光标向右移动一个字符。这可能会将光标移动到多行输入的下一行。
- Windows 模式:
RightArrow
- Emacs 模式:
RightArrow
、Ctrl+f
ForwardWord
将光标向前移动到当前单词的末尾,或者如果在单词之间,则移动到下一个单词的末尾。字边界由一组可配置的字符定义。
- Emacs 模式:
Alt+f
、Escape,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+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>
、,
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
切换预测视图
在
InlineView
和ListView
之间切换预测视图样式。- 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
- Windows 模式:
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag