about_PSReadLine_Functions
簡短描述
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>
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>
BackwardDeleteInput
如同BackwardKillInput - 會從輸入的點刪除文字,但不會將已刪除的文字放在終止環中。
- Windows 模式:
Ctrl+Home
- Vi 插入模式:
Ctrl+u
、Ctrl+Home
- Vi 命令模式:
<Ctrl+u>
、<Ctrl+Home>
BackwardDeleteLine
如同BackwardKillLine - 會從點到行開頭刪除文字,但不會將已刪除的文字放在終止環中。
- Vi 命令模式:
<d,0>
BackwardDeleteWord
刪除上一個單字。
- Vi 命令模式:
<Ctrl+w>
、<d,b>
BackwardKillInput
從輸入開頭清除游標的文字。 清除的文字會放在殺傷環中。
- Emacs 模式:
Ctrl+u
、Ctrl+x,Backspace
BackwardKillLine
清除從目前邏輯行開頭到游標的文字。 清除的文字會放在殺傷環中。
- 函式未系結。
BackwardKillWord
清除從目前單字開頭到游標的輸入。 如果游標介於單字之間,則會將輸入從前一個單字開頭清除至游標。 清除的文字會放在殺傷環中。
- Windows 模式:
Ctrl+Backspace
、Ctrl+w
- Emacs 模式:
Alt+Backspace
、Escape,Backspace
- Vi 插入模式:
Ctrl+Backspace
- Vi 命令模式:
<Ctrl+Backspace>
BackwardReplaceChar
取代游標前方的字元。
- Vi 命令模式:
<c,h>
CancelLine
取消目前的輸入,將輸入留在畫面上,但會返回主機,以便再次評估提示。
- Vi 插入模式:
Ctrl+c
- Vi 命令模式:
<Ctrl+c>
CapitalizeWord
在 PSReadLine 2.3.0 中新增
將下一個單字的第一個字元轉換成大寫,並將其餘字元轉換成小寫。
- Emacs 模式:
Alt+c
、Escape,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,Spacebar>
DeleteCharOrExit
刪除游標下的字元,或如果行是空的,請結束進程。
- Emacs 模式:
Ctrl+d
DeleteEndOfBuffer
刪除至多行緩衝區的結尾。
- Vi 命令模式:
<d,G>
DeleteEndOfWord
刪除至字尾。
- Vi 命令模式:
<d,e>
DeleteLine
刪除多行緩衝區的目前邏輯行,啟用復原。
- Vi 命令模式:
<d,d>
、<d,_>
DeleteLineToFirstChar
從多行緩衝區中目前邏輯行的第一個非空白字元中刪除。
- Vi 命令模式:
<d,^>
DeleteNextLines
刪除多行緩衝區中的目前和下一個 n 個邏輯行。
- Vi 命令模式:
<d,j>
DeletePreviousLines
刪除前一個要求的邏輯行和多行緩衝區中的目前邏輯行。
- Vi 命令模式:
<d,k>
DeleteRelativeLines
從緩衝區的開頭刪除至多行緩衝區中的目前邏輯行。
如同大部分的 Vi 命令, <d,g,g>
命令可以加上數值自變數來指定絕對行號,以及目前的行號,構成要刪除的行範圍。 如果未指定,則 numeric 自變數預設為 1,這會參考多行緩衝區中的第一個邏輯行。
從多行中刪除的實際行數會計算為目前邏輯行號與指定數值自變數之間的差異,因此可以是負數。 因此,方法 名稱的相對 部分。
- Vi 命令模式:
<d,g,g>
DeleteToEnd
刪除到行尾。
- Vi 命令模式:
<D>
、<d,$>
DeleteWord
刪除下一個字。
- Vi 命令模式:
<d,w>
DowncaseWord
在 PSReadLine 2.3.0 中新增
將下一個字轉換成小寫。
- Emacs 模式:
Alt+l
、Escape,l
ForwardDeleteInput
如同 KillLine - 會從輸入的點到結尾刪除文字,但不會將已刪除的文字放在終止環中。
- Windows 模式:
Ctrl+End
- Vi 插入模式:
Ctrl+End
- Vi 命令模式:
<Ctrl+End>
ForwardDeleteLine
從目前邏輯行的點到結尾刪除文字,但不會將已刪除的文字放在終止環中。
- 函式未系結
InsertLineAbove
不論游標位於目前行的位置為何,都會在目前行上方建立新的空白行。 游標會移至新行的開頭。
- Windows 模式:
Ctrl+Enter
InsertLineBelow
不論游標位於目前行的位置為何,都會在目前行下方建立新的空白行。 游標會移至新行的開頭。
- 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>
重要
使用 Paste 函式時,剪貼簿 緩衝區的整個內容會貼到 PSReadLine 的輸入緩衝區。 然後輸入緩衝區會傳遞至PowerShell剖析器。 使用主控台應用程式的 按下滑鼠右鍵 貼上方法貼上的輸入會一次複製到輸入緩衝區一個字元。 複製換行符時,輸入緩衝區會傳遞至剖析器。 因此,輸入會一次剖析一行。 貼上方法之間的差異會導致不同的執行行為。
PasteAfter
將剪貼簿貼到游標之後,將游標移至貼上的文字結尾。
- Vi 命令模式:
<p>
PasteBefore
將剪貼簿貼到游標之前,將游標移至貼上的文字結尾。
- Vi 命令模式:
<P>
PrependAndAccept
前面加上 『#』,並接受這一行。
- Vi 命令模式:
<#>
取消復原
復原復原。
- Windows 模式:
Ctrl+y
- Vi 插入模式:
Ctrl+y
- Vi 命令模式:
<Ctrl+y>
RepeatLastCommand
重複最後一個文字修改。
- Vi 命令模式:
<.>
ReplaceChar
將目前的字元取代為下一組輸入的字元。
- Vi 命令模式:
<c,l>
、<c,Spacebar>
ReplaceCharInPlace
將目前的字元取代為只有一個字元。
- Vi 命令模式:
<r>
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
UpcaseWord
在 PSReadLine 2.3.0 中新增
將下一個字轉換成大寫。
- Emacs 模式:
Alt+u
、Escape,u
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>
ViBackwardReplaceGlob
將回溯刪除至上一個字的開頭,以空格符分隔,然後進入插入模式。
- Vi 命令模式:
<c,B>
ViBackwardReplaceLine
取代游標左邊的行,以及開始的所有方式。
- Vi 命令模式:
<c,0>
ViBackwardReplaceLineToFirstChar
取代游標左邊的行,以及行開頭的一個字元。
- Vi 命令模式:
<c,^>
ViBackwardReplaceWord
取代上一個字。
- Vi 命令模式:
<c,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>
ViReplaceBrace
取代目前大括號字元與相符夥伴之間的所有字元。
- Vi 命令模式:
<c,%>
ViReplaceEndOfGlob
刪除至字尾,以空格符分隔,然後進入插入模式。
- Vi 命令模式:
<c,E>
ViReplaceEndOfWord
刪除至字尾,以空格符和通用分隔符分隔,然後進入插入模式。
- Vi 命令模式:
<c,E>
ViReplaceGlob
刪除至下一個字的開頭,以空格符分隔,然後輸入插入模式。
- Vi 命令模式:
<c,W>
ViReplaceLine
清除整個命令行。
- Vi 命令模式:
<S>
、<c,c>
ViReplaceToBeforeChar
取代直到指定的字元為止。
- Vi 命令模式:
<c,t>
ViReplaceToBeforeCharBackward
取代直到指定的字元為止。
- Vi 命令模式:
<c,T>
ViReplaceToChar
刪除直到指定的字元為止。
- Vi 命令模式:
<c,f>
ViReplaceToCharBackward
取代直到指定的字元為止。
- Vi 命令模式:
<c,F>
ViReplaceToEnd
將游標位置的字元取代為行尾。
- Vi 命令模式:
<c,$>
、<C>
ViReplaceUntilEsc
取代目前的字元,直到輸入逸出或接受行為止。
- Vi 命令模式:
<r>
ViReplaceWord
取代目前的單字。
- Vi 命令模式:
<c,W>
ViYankBeginningOfLine
從緩衝區開頭到游標的洋克。
- Vi 命令模式:
<y,0>
ViYankEndOfGlob
從游標到 WORD 結尾的洋克。
- Vi 命令模式:
<y,E>
ViYankEndOfWord
從游標到字尾的洋克。
- Vi 命令模式:
<y,e>
ViYankLeft
游標左邊的洋克字元(s)。
- Vi 命令模式:
<y,h>
ViYankLine
擷取整個緩衝區。
- Vi 命令模式:
<y,y>
ViYankNextGlob
從游標到下一個 WORD 開頭的洋克。
- Vi 命令模式:
<y,W>
ViYankNextWord
在游標後面擷取單字。
- Vi 命令模式:
<y,w>
ViYankPercent
洋克到/從相符的大括弧。
- Vi 命令模式:
<y,%>
ViYankPreviousGlob
從 WORD(s) 開頭到游標的洋克。
- Vi 命令模式:
<y,B>
ViYankPreviousWord
在游標前揚一字。
- Vi 命令模式:
<y,b>
ViYankRight
游標正下方和右邊的洋克字元。
- Vi 命令模式:
<y,l>
、<y,Spacebar>
ViYankToEndOfLine
從游標到緩衝區結尾的洋基。
- Vi 命令模式:
<y,$>
ViYankToFirstChar
從第一個非空格符到游標的洋克。
- Vi 命令模式:
<y,^>
美國佬
將最近終止的文字新增至輸入。
- Emacs 模式:
Ctrl+y
YankLastArg
揚克上一個歷史線的最後一個論點。 使用 自變數時,第一次叫用時,其行為就像 YankNthArg 一樣。 如果多次叫用,而是逐一查看歷程記錄,而arg會設定方向(負反轉方向)。
- Windows 模式:
Alt+.
- Emacs 模式:
Alt+.
、、Alt+_
、Escape,.
、Escape,_
YankNthArg
揚克前一個歷史線的第一個自變數(在命令之後)。 使用 自變數時,將 nth 自變數 (從 0 開始),如果自變數為負數,則從最後一個自變數開始。
- Emacs 模式:
Ctrl+Alt+y
、Escape,Ctrl+y
洋克波普
如果先前的作業是 Yank 或 YankPop,請將先前的已擷取文字取代為 kill-ring 的下一個已終止文字。
- Emacs 模式:
Alt+y
、Escape,y
完成函式
完成
嘗試對游標周圍的文字執行完成。 如果有多個可能的完成,則會使用最長的明確前置詞來完成。 如果嘗試完成最長的明確完成,則會顯示可能的完成清單。
- Emacs 模式:
Tab
MenuComplete
嘗試對游標周圍的文字執行完成。 如果有多個可能的完成,則會使用最長的明確前置詞來完成。 如果嘗試完成最長的明確完成,則會顯示可能的完成清單。
- Windows 模式:
Ctrl+@
、Ctrl+Spacebar
- Emacs 模式:
Ctrl+Spacebar
可能的完成
顯示可能的完成清單。
- Emacs 模式:
Alt+=
- Vi 插入模式:
Ctrl+Spacebar
- Vi 命令模式:
<Ctrl+Spacebar>
TabCompleteNext
嘗試完成游標周圍的文字,並完成下一個可用的完成。
- Windows 模式:
Tab
- Vi 命令模式:
<Tab>
TabCompletePrevious
嘗試使用先前可用的完成,完成游標周圍的文字。
- Windows 模式:
Shift+Tab
- Vi 命令模式:
<Shift+Tab>
ViTabCompleteNext
視需要結束目前的編輯群組,並叫用 TabCompleteNext。
- Vi 插入模式:
Tab
ViTabCompletePrevious
視需要結束目前的編輯群組,並叫用 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。
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
ForwardWord
將游標向前移至目前單字的結尾,或在單字之間移動至下一個單字的結尾。 文字界限是由一組可設定的字元所定義。
- Emacs 模式:
Alt+f
、Escape,f
定義字邊界的字元是在 PSConsoleReadLineOptions 物件的 WordDelimiters 屬性中設定。 若要檢視或變更 WordDelimiters 屬性,請參閱 Get-PSReadLineOption 和 Set-PSReadLineOption。
GotoBrace
移至相符的大括弧、括弧或方括弧。
- Windows 模式:
Ctrl+]
- Vi 插入模式:
Ctrl+]
- Vi 命令模式:
<Ctrl+]>
GotoColumn
移至arg所指示的數據行。
- Vi 命令模式:
<|>
GotoFirstNonBlankOfLine
將游標移至行中的第一個非空白字元。
- Vi 命令模式:
<^>
、<_>
MoveToEndOfLine
將游標移至輸入的結尾。
- Vi 命令模式:
<End>
、<$>
MoveToFirstLine
移至多行命令中的第一行。
- Vi 命令模式:
<g,g>
MoveToLastLine
移至多行命令中的最後一行。
- Vi 命令模式:
<G>
NextLine
將游標移至下一行。
- 函式未系結。
NextWord
將游標向前移動至下一個字的開頭。 文字界限是由一組可設定的字元所定義。
- Windows 模式:
Ctrl+RightArrow
- Vi 插入模式:
Ctrl+RightArrow
- Vi 命令模式:
<Ctrl+RightArrow>
定義字邊界的字元是在 PSConsoleReadLineOptions 物件的 WordDelimiters 屬性中設定。 若要檢視或變更 WordDelimiters 屬性,請參閱 Get-PSReadLineOption 和 Set-PSReadLineOption。
NextWordEnd
將游標向前移至目前單字的結尾,或在單字之間移動至下一個單字的結尾。 文字界限是由一組可設定的字元所定義。
- Vi 命令模式:
<e>
定義字邊界的字元是在 PSConsoleReadLineOptions 物件的 WordDelimiters 屬性中設定。 若要檢視或變更 WordDelimiters 屬性,請參閱 Get-PSReadLineOption 和 Set-PSReadLineOption。
PreviousLine
將游標移至上一行。
- 函式未系結。
ShellBackwardWord
將游標移回目前單字的開頭,或如果在單字之間,則為上一個單字的開頭。 Word 界限是由 PowerShell 令牌所定義。
- 函式未系結。
ShellForwardWord
將游標向前移動至下一個字的開頭。 Word 界限是由 PowerShell 令牌所定義。
- 函式未系結。
ShellNextWord
將游標向前移至目前單字的結尾,或在單字之間移動至下一個單字的結尾。 Word 界限是由 PowerShell 令牌所定義。
- 函式未系結。
ViBackwardChar
以 Vi 編輯模式將游標移至左邊的一個字元。 這可能會將游標移至前一行多行輸入。
- Vi 插入模式:
LeftArrow
- Vi 命令模式:
<LeftArrow>
、、<Backspace>
<h>
ViBackwardWord
將游標移回目前單字的開頭,或如果在單字之間,則為上一個單字的開頭。 文字界限是由一組可設定的字元所定義。
- Vi 命令模式:
<b>
定義字邊界的字元是在 PSConsoleReadLineOptions 物件的 WordDelimiters 屬性中設定。 若要檢視或變更 WordDelimiters 屬性,請參閱 Get-PSReadLineOption 和 Set-PSReadLineOption。
ViEndOfGlob
將游標移至此字的結尾,以空格符分隔。
- Vi 命令模式:
<E>
ViEndOfPreviousGlob
移至上一個字的結尾,只使用空格元做為文字分隔符。
- 函式未系結。
ViForwardChar
在 Vi 編輯模式中,將游標移至右邊的一個字元。 這可能會將游標移至多行輸入的下一行。
- Vi 插入模式:
RightArrow
- Vi 命令模式:
<RightArrow>
、、<Spacebar>
<l>
ViGotoBrace
類似於 GotoBrace,但以字元為基礎,而不是以令牌為基礎。
- Vi 命令模式:
<%>
ViNextGlob
移至下一個單字,只使用空格元做為單字分隔符。
- Vi 命令模式:
<W>
ViNextWord
將游標向前移動至下一個字的開頭。 文字界限是由一組可設定的字元所定義。
- Vi 命令模式:
<w>
定義字邊界的字元是在 PSConsoleReadLineOptions 物件的 WordDelimiters 屬性中設定。 若要檢視或變更 WordDelimiters 屬性,請參閱 Get-PSReadLineOption 和 Set-PSReadLineOption。
歷程記錄函式
BeginningOfHistory
移至歷程記錄中的第一個專案。
- Emacs 模式:
Alt+<
ClearHistory
清除 PSReadLine 中的歷程記錄。 這不會影響PowerShell歷程記錄。
- Windows 模式:
Alt+F7
EndOfHistory
移至歷程記錄中的最後一個專案(目前輸入)。
- Emacs 模式:
Alt+>
ForwardSearchHistory
透過歷程記錄執行累加向前搜尋。
- Windows 模式:
Ctrl+s
- Emacs 模式:
Ctrl+s
- Vi 插入模式:
Ctrl+s
- Vi 命令模式:
<Ctrl+s>
HistorySearchBackward
將目前的輸入取代為 PSReadLine 歷程記錄中的 『previous』 專案,以符合開始與輸入與游標之間的字元。
- Windows 模式:
F8
HistorySearchForward
將目前的輸入取代為 PSReadLine 歷程記錄中的 『next』 專案,以符合開始與輸入與游標之間的字元。
- Windows 模式:
Shift+F8
NextHistory
將目前的輸入取代為 PSReadLine 歷程記錄中的 『next』 專案。
- Windows 模式:
DownArrow
- Emacs 模式:
DownArrow
、Ctrl+n
- Vi 插入模式:
DownArrow
- Vi 命令模式:
<DownArrow>
、、<j>
<+>
PreviousHistory
將目前的輸入取代為 PSReadLine 歷程記錄中的 『previous』 專案。
- Windows 模式:
UpArrow
- Emacs 模式:
UpArrow
、Ctrl+p
- Vi 插入模式:
UpArrow
- Vi 命令模式:
<UpArrow>
、、<k>
<->
ReverseSearchHistory
透過歷程記錄執行累加式回溯搜尋。
- Windows 模式:
Ctrl+r
- Emacs 模式:
Ctrl+r
- Vi 插入模式:
Ctrl+r
- Vi 命令模式:
<Ctrl+r>
ViSearchHistoryBackward
提示搜尋字串,並在 AcceptLine 上起始搜尋。
- Vi 命令模式:
</>
其他函式
CaptureScreen
啟動互動式螢幕擷取 - 向上/向下箭號選取行,輸入將選取的文字複製到剪貼簿做為文字和 HTML。
- 函式未系結。
ClearScreen
清除畫面,並在畫面頂端繪製目前的線條。
- Windows 模式:
Ctrl+l
- Emacs 模式:
Ctrl+l
- Vi 插入模式:
Ctrl+l
- Vi 命令模式:
<Ctrl+l>
DigitArgument
啟動新的數位自變數,以傳遞至其他函式。 您可以使用這個 作為下一個由keypress叫用的函式乘數。 例如,按下 會將 <Alt+1>
<Alt+0>
digit-argument 值設定為 10。 然後,按下 #
按鍵會將 10 #
個字元 (##########
) 傳送至輸入行。
同樣地,您可以將此專案與其他作業搭配使用,例如 <Delete>
或 Left-Arrow
。
- Windows 模式:
Alt+0
、Alt+1
、Alt+2
、Alt+3
Alt+6
Alt+4
Alt+5
、Alt+7
、、Alt+8
Alt+9
Alt+-
- Emacs 模式:
Alt+0
、Alt+1
、Alt+2
Alt+4
Alt+6
Alt+5
Alt+3
、、、Alt+7
、、Alt+8
Alt+9
Alt+-
- Vi 命令模式:
<0>
、、<1>
<2>
、<4>
<3>
、、、、<5>
<7>
<8>
<6>
<9>
InvokePrompt
清除目前的提示,並呼叫 prompt 函式來重新顯示提示。 適用於變更狀態的自定義金鑰處理程式。 例如,變更目前的目錄。
- 函式未系結。
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
ShowCommandHelp
提供完整 Cmdlet 說明的檢視。 當游標位於完全展開參數的結尾時,按下 <F1>
索引鍵會將說明的顯示放在該參數的位置。
說明會使用來自 Microsoft.PowerShell.Pager 的 Pager,在替代畫面緩衝區上顯示。 當您結束呼叫器時,系統會回到原始螢幕上的原始游標位置。 此呼叫器僅適用於新式終端機應用程式,例如 Windows 終端機。
- Windows 模式:
F1
- Emacs 模式:
F1
- Vi 插入模式:
F1
- Vi 命令模式:
<F1>
ShowKeyBindings
顯示所有系結金鑰。
- Windows 模式:
Ctrl+Alt+?
- Emacs 模式:
Ctrl+Alt+?
- Vi 插入模式:
Ctrl+Alt+?
ShowParameterHelp
提供參數的動態說明,方法是將它顯示在目前的命令列下方,例如 MenuComplete
。 當您按下 <Alt+h>
按鍵時,游標必須位於完全展開的參數名稱結尾。
- Windows 模式:
Alt+h
- Emacs 模式:
Alt+h
- Vi 插入模式:
Alt+h
- Vi 命令模式:
<Alt+h>
ViCommandMode
將目前的作業模式從 Vi-Insert 切換至 Vi-Command。
- Vi 插入模式:
Escape
ViDigitArgumentInChord
啟動新的數位自變數,以在vi的其中一個和弦中傳遞至其他函式。
- 函式未系結。
ViEditVisually
在或$env:VISUAL
所$env:EDITOR
指定的文字編輯器中編輯命令列。
- Emacs 模式:
Ctrl+x,Ctrl+e
- Vi 命令模式:
<v>
ViExit
結束殼層。
- 函式未系結。
ViInsertMode
切換至 [插入] 模式。
- Vi 命令模式:
<i>
WhatIsKey
讀取金鑰,並告訴我密鑰系結至哪些內容。
- Windows 模式:
Alt+?
- Emacs 模式:
Alt+?
預測函式
AcceptNextSuggestionWord
接受內嵌或選取建議的下一個字
- 函式未系結。
AcceptSuggestion
使用 InlineView
做為預測的檢視樣式時,接受目前的內嵌建議。
- 函式未系結。
NextSuggestion
使用 ListView
做為預測的檢視樣式時,請流覽至清單中的下一個建議。
- 函式未系結。
PreviousSuggestion
使用 ListView
做為預測的檢視樣式時,請流覽至清單中的上一個建議。
- 函式未系結。
ShowFullPredictionTooltip
在完整檢視中顯示目前選取清單專案的工具提示。
- Windows 模式:
F4
- Emacs 模式:
F4
- Vi 插入模式:
F4
SwitchPredictionView
在和 ListView
之間InlineView
切換用於預測的檢視樣式。
- Windows 模式:
F2
- Emacs 模式:
F2
- Vi 插入模式:
F2
搜尋函式
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 命令模式:
<?>
選取函式
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
SelectCommandArgument
選取命令自變數的視覺效果。 選取自變數的範圍在腳本區塊內。 根據數據指標位置,它會從最內部的腳本區塊搜尋到最遠的腳本區塊,並在它找到腳本區塊範圍中的任何自變數時停止。
此函式會接受 DigitArgument。 它會將正自變數或負自變數值視為目前選取自變數的向前或向後位移,或在未選取自變數時,從目前的游標位置處理。
- Windows 模式:
Alt+a
- Emacs 模式:
Alt+a
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+@
自訂金鑰系結支援 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)
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)
取代某些輸入。 此作業支持復原/重做。 這是慣用於Delete,後面接著Insert,因為它被視為復原的單一動作。
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()
逾時且目前的編輯緩衝區空白時才會發出訊號。