Freigeben über


PSReadLine

about_PSReadLine

Kurze Beschreibung

PSReadLine bietet eine verbesserte Befehlszeilenbearbeitung in der PowerShell-Konsole.

Lange Beschreibung

PSReadLine 2.0 bietet eine leistungsstarke Befehlszeilenbearbeitung für die PowerShell-Konsole. Sie bietet:

  • Syntaxfarben der Befehlszeile
  • Visueller Hinweis auf Syntaxfehler
  • Eine bessere mehrzeilige Oberfläche (sowohl Bearbeitung als auch Verlauf)
  • Anpassbare Schlüsselbindungen
  • Cmd- und Emacs-Modi
  • Viele Konfigurationsoptionen
  • Bash-Stilvervollständigung (optional im Cmd-Modus, Standard im Emacs-Modus)
  • Emacs Yank/Kill-Ring
  • PowerShell-tokenbasiertes "Wort" verschieben und beenden

PSReadLine erfordert PowerShell 3.0 oder höher und den Konsolenhost. Es funktioniert nicht in PowerShell ISE. Es funktioniert in der Konsole von Visual Studio Code.

Hinweis

Ab PowerShell 7.0 überspringt PowerShell das automatische Laden von PSReadLine unter Windows, wenn ein Sprachausgabeprogramm erkannt wird. Derzeit funktioniert PSReadLine nicht gut mit den Sprachausgaben. Das Standardrendering und die Formatierung von PowerShell 7.0 unter Windows funktionieren ordnungsgemäß. Sie können das Modul bei Bedarf manuell laden.

Die folgenden Funktionen sind in der Klasse [Microsoft.PowerShell.PSConsoleReadLine] verfügbar.

Grundlegende Bearbeitungsfunktionen

Abbruch

Aktuelle Aktion abbrechen, z. B. inkrementelle Verlaufssuche.

  • Emacs: <Ctrl+g>

AcceptAndGetNext

Versuchen Sie, die aktuelle Eingabe auszuführen. Wenn sie ausgeführt werden kann (z. B. AcceptLine), rufen Sie das nächste Element aus dem Verlauf ab, wenn ReadLine das nächste Mal aufgerufen wird.

  • Emacs: <Ctrl+o>

AcceptLine

Versuchen Sie, die aktuelle Eingabe auszuführen. Wenn die aktuelle Eingabe unvollständig ist (z. B. fehlende schließende Klammern, Klammern oder Anführungszeichen), wird die Fortsetzungsaufforderung in der nächsten Zeile angezeigt, und PSReadLine wartet auf die Bearbeitung der aktuellen Eingabe.

  • Befehl: <Enter>
  • Emacs: <Enter>
  • Vi-Einfügemodus: <Enter>

Addline

Die Fortsetzungsaufforderung wird in der nächsten Zeile angezeigt, und PSReadLine wartet auf schlüssel zum Bearbeiten der aktuellen Eingabe. Dies ist nützlich, um mehrzeilige Eingaben als einen einzelnen Befehl einzugeben, auch wenn eine einzelne Zeile die Eingabe selbst abgeschlossen hat.

  • Befehl: <Shift+Enter>
  • Emacs: <Shift+Enter>
  • Vi-Einfügemodus: <Shift+Enter>
  • Vi-Befehlsmodus: <Shift+Enter>

BackwardDeleteChar

Löschen Sie das Zeichen vor dem Cursor.

  • Cmd: <Backspace>, <Ctrl+h>
  • Emacs: <Backspace>, <Ctrl+Backspace>, <Ctrl+h>
  • Vi-Einfügemodus: <Backspace>
  • Vi-Befehlsmodus: <X>, <d,h>

BackwardDeleteLine

Wie BackwardKillLine – löscht Text vom Punkt bis zum Anfang der Zeile, legt den gelöschten Text jedoch nicht in den Kill-Ring ein.

  • Befehl: <Ctrl+Home>
  • Vi-Einfügemodus: <Ctrl+u>, <Ctrl+Home>
  • Vi-Befehlsmodus: <Ctrl+u>, <Ctrl+Home>, <d,0>

BackwardDeleteWord

Löscht das vorherige Wort.

  • Vi-Befehlsmodus: <Ctrl+w>, <d,b>

BackwardKillLine

Löschen Sie die Eingabe vom Anfang der Eingabe bis zum Cursor. Der gelöschte Text wird im Kill-Ring platziert.

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

BackwardKillWord

Löschen Sie die Eingabe vom Anfang des aktuellen Worts bis zum Cursor. Wenn sich der Cursor zwischen Wörtern befindet, wird die Eingabe vom Anfang des vorherigen Worts zum Cursor gelöscht. Der gelöschte Text wird im Kill-Ring platziert.

  • Befehl: <Ctrl+Backspace>
  • Emacs: <Alt+Backspace>, <Escape,Backspace>
  • Vi-Einfügemodus: <Ctrl+Backspace>
  • Vi-Befehlsmodus: <Ctrl+Backspace>

CancelLine

Brechen Sie die aktuelle Eingabe ab, und lassen Sie die Eingabe auf dem Bildschirm, kehren sie jedoch zum Host zurück, damit die Eingabeaufforderung erneut ausgewertet wird.

  • Vi-Einfügemodus: <Ctrl+c>
  • Vi-Befehlsmodus: <Ctrl+c>

Kopieren

Kopieren Sie den ausgewählten Bereich in die Systemablage. Wenn kein Bereich ausgewählt ist, kopieren Sie die ganze Zeile.

  • Befehl: <Ctrl+C>

CopyOrCancelLine

Wenn Text ausgewählt ist, kopieren Sie sie in die Zwischenablage, andernfalls brechen Sie die Zeile ab.

  • Befehl: <Ctrl+c>
  • Emacs: <Ctrl+c>

Ausschneiden

Löscht den ausgewählten Bereich, indem gelöschter Text in die Systemzwischenablage eingefügt wird.

  • Befehl: <Ctrl+x>

DeleteChar

Löschen Sie das Zeichen unter dem Cursor.

  • Befehl: <Delete>
  • Emacs: <Delete>
  • Vi-Einfügemodus: <Delete>
  • Vi-Befehlsmodus: <Delete>, <x>, <d,l>, <d,Space>

DeleteCharOrExit

Löschen Sie das Zeichen unter dem Cursor, oder beenden Sie den Prozess, wenn die Zeile leer ist.

  • Emacs: <Ctrl+d>

DeleteEndOfWord

Bis zum Ende des Worts löschen.

  • Vi-Befehlsmodus: <d,e>

DeleteLine

Löscht die aktuelle Zeile und aktiviert das Rückgängigmachen.

  • Vi-Befehlsmodus: <d,d>

DeleteLineToFirstChar

Löscht Text vom Cursor an das erste nicht leere Zeichen der Zeile.

  • Vi-Befehlsmodus: <d,^>

DeleteToEnd

Bis zum Ende der Zeile löschen.

  • Vi-Befehlsmodus: <D>, <d,$>

DeleteWord

Löschen Sie das nächste Wort.

  • Vi-Befehlsmodus: <d,w>

ForwardDeleteLine

Wie ForwardKillLine löscht Text vom Punkt bis zum Ende der Zeile, legt den gelöschten Text jedoch nicht in den Kill-Ring ein.

  • Befehl: <Ctrl+End>
  • Vi-Einfügemodus: <Ctrl+End>
  • Vi-Befehlsmodus: <Ctrl+End>

InsertLineAbove

Über der aktuellen Zeile wird unabhängig davon, wo sich der Cursor in der aktuellen Zeile befindet, eine neue leere Zeile erstellt. Der Cursor bewegt sich an den Anfang der neuen Zeile.

  • Befehl: <Ctrl+Enter>

InsertLineBelow

Unter der aktuellen Zeile wird unabhängig davon, wo sich der Cursor in der aktuellen Zeile befindet, eine neue leere Zeile erstellt. Der Cursor bewegt sich an den Anfang der neuen Zeile.

  • Befehl: <Shift+Ctrl+Enter>

InvertCase

Umkehren Sie die Groß-/Kleinschreibung des aktuellen Zeichens, und wechseln Sie zum nächsten Zeichen.

  • Vi-Befehlsmodus: <~>

KillLine

Löschen Sie die Eingabe vom Cursor bis zum Ende der Eingabe. Der gelöschte Text wird im Kill-Ring platziert.

  • Emacs: <Ctrl+k>

KillRegion

Beenden Sie den Text zwischen dem Cursor und der Markierung.

  • Die Funktion ist ungebunden.

KillWord

Löschen Sie die Eingabe vom Cursor bis zum Ende des aktuellen Worts. Wenn sich der Cursor zwischen Wörtern befindet, wird die Eingabe vom Cursor bis zum Ende des nächsten Worts gelöscht. Der gelöschte Text wird im Kill-Ring platziert.

  • Befehl: <Ctrl+Delete>
  • Emacs: <Alt+d>, <Escape,d>
  • Vi-Einfügemodus: <Ctrl+Delete>
  • Vi-Befehlsmodus: <Ctrl+Delete>

Einfügen

Fügen Sie Text aus der Systemablage ein.

  • Cmd: <Ctrl+v>, <Shift+Insert>
  • Vi-Einfügemodus: <Ctrl+v>
  • Vi-Befehlsmodus: <Ctrl+v>

Wichtig

Bei Verwendung der Funktion Einfügen wird der gesamte Inhalt des Zwischenablagepuffers in den Eingabepuffer von PSReadLine eingefügt. Der Eingabepuffer wird dann an den PowerShell-Parser übergeben. Eingaben, die mit der Rechtsklick-Einfügemethode der Konsolenanwendung eingefügt werden, werden zeichenweise in den Eingabepuffer kopiert. Der Eingabepuffer wird an den Parser übergeben, wenn ein Zeilenumbruchzeichen kopiert wird. Daher wird die Eingabe zeile für Zeile analysiert. Der Unterschied zwischen Einfügemethoden führt zu einem unterschiedlichen Ausführungsverhalten.

PasteAfter

Fügen Sie die Zwischenablage nach dem Cursor ein, und bewegen Sie den Cursor an das Ende des eingefügten Texts.

  • Vi-Befehlsmodus: <p>

PasteBefore

Fügen Sie die Zwischenablage vor dem Cursor ein, und bewegen Sie den Cursor an das Ende des eingefügten Texts.

  • Vi-Befehlsmodus: <P>

PrependAndAccept

Fügen Sie einem "#" voran, und akzeptieren Sie die Zeile.

  • Vi-Befehlsmodus: <#>

Wiederholen

Rückgängigmachen eines Rückgängig-Vorgangs.

  • Befehl: <Ctrl+y>
  • Vi-Einfügemodus: <Ctrl+y>
  • Vi-Befehlsmodus: <Ctrl+y>

RepeatLastCommand

Wiederholen Sie die letzte Textänderung.

  • Vi-Befehlsmodus: <.>

RevertLine

Stellt die gesamte Eingabe auf die aktuelle Eingabe zurück.

  • Befehl: <Escape>
  • Emacs: <Alt+r>, <Escape,r>

ShellBackwardKillWord

Löschen Sie die Eingabe vom Anfang des aktuellen Worts bis zum Cursor. Wenn sich der Cursor zwischen Wörtern befindet, wird die Eingabe vom Anfang des vorherigen Worts zum Cursor gelöscht. Der gelöschte Text wird im Kill-Ring platziert.

Die Funktion ist ungebunden.

ShellKillWord

Löschen Sie die Eingabe vom Cursor bis zum Ende des aktuellen Worts. Wenn sich der Cursor zwischen Wörtern befindet, wird die Eingabe vom Cursor bis zum Ende des nächsten Worts gelöscht. Der gelöschte Text wird im Kill-Ring platziert.

Die Funktion ist ungebunden.

SwapCharacters

Tauschen Sie das aktuelle zeichen und das davor.

  • Emacs: <Ctrl+t>
  • Vi-Einfügemodus: <Ctrl+t>
  • Vi-Befehlsmodus: <Ctrl+t>

Rückgängig

Rückgängigmachen einer vorherigen Bearbeitung.

  • Befehl: <Ctrl+z>
  • Emacs: <Ctrl+_>, <Ctrl+x,Ctrl+u>
  • Vi-Einfügemodus: <Ctrl+z>
  • Vi-Befehlsmodus: <Ctrl+z>, <u>

UndoAll

Rückgängigmachen aller vorherigen Änderungen für Zeile.

  • Vi-Befehlsmodus: <U>

UnixWordRubout

Löschen Sie die Eingabe vom Anfang des aktuellen Worts auf den Cursor. Wenn sich der Cursor zwischen Wörtern befindet, wird die Eingabe vom Anfang des vorherigen Worts auf den Cursor gelöscht. Der gelöschte Text wird im Killring platziert.

  • Emacs: <Ctrl+w>

ValidateAndAcceptLine

Versuchen Sie, die aktuelle Eingabe auszuführen. Wenn die aktuelle Eingabe unvollständig ist (z. B. fehlende schließende Klammern, Klammern oder Anführungszeichen), wird die Fortsetzungsaufforderung in der nächsten Zeile angezeigt, und PSReadLine wartet, bis Schlüssel die aktuelle Eingabe bearbeiten.

  • Emacs: <Ctrl+m>

ViAcceptLine

Übernehmen Sie die Zeile, und wechseln Sie zum Einfügemodus.

  • Vi-Befehlsmodus: <Enter>

ViAcceptLineOrExit

Wie DeleteCharOrExit im Emacs-Modus, akzeptiert aber die Zeile, anstatt ein Zeichen zu löschen.

  • Vi Einfügemodus: <Ctrl+d>
  • Vi-Befehlsmodus: <Ctrl+d>

ViAppendLine

Unterhalb der aktuellen Zeile wird eine neue Zeile eingefügt.

  • Vi-Befehlsmodus: <o>

ViBackwardDeleteGlob

Löscht das vorherige Wort, wobei nur Leerzeichen als Worttrennzeichen verwendet werden.

  • Vi-Befehlsmodus: <d,B>

ViBackwardGlob

Verschiebt den Cursor zurück an den Anfang des vorherigen Worts, wobei nur Leerzeichen als Trennzeichen verwendet werden.

  • Vi-Befehlsmodus: <B>

ViDeleteBrace

Suchen Sie die übereinstimmende Klammer, Klammer oder eckige Klammer, und löschen Sie alle Darin enthaltenen Inhalte, einschließlich der Klammer.

  • Vi-Befehlsmodus: <d,%>

ViDeleteEndOfGlob

Löschen Sie bis zum Ende des Worts.

  • Vi-Befehlsmodus: <d,E>

ViDeleteGlob

Löschen Sie den nächsten Glob (leerzeichentrenntes Wort).

  • Vi-Befehlsmodus: <d,W>

ViDeleteToBeforeChar

Löscht bis zum angegebenen Zeichen.

  • Vi-Befehlsmodus: <d,t>

ViDeleteToBeforeCharBackward

Löscht bis zum angegebenen Zeichen.

  • Vi-Befehlsmodus: <d,T>

ViDeleteToChar

Löscht bis zum angegebenen Zeichen.

  • Vi-Befehlsmodus: <d,f>

ViDeleteToCharBackward

Löscht rückwärts bis zum angegebenen Zeichen.

  • Vi-Befehlsmodus: <d,F>

ViInsertAtBegining

Wechseln Sie zum Einfügemodus, und positionieren Sie den Cursor am Anfang der Zeile.

  • Vi-Befehlsmodus: <I>

ViInsertAtEnd

Wechseln Sie zum Einfügemodus, und positionieren Sie den Cursor am Ende der Zeile.

  • Vi-Befehlsmodus: <A>

ViInsertLine

Über der aktuellen Zeile wird eine neue Zeile eingefügt.

  • Vi-Befehlsmodus: <O>

ViInsertWithAppend

Fügen Sie an der aktuellen Zeilenposition an.

  • Vi-Befehlsmodus: <a>

ViInsertWithDelete

Löschen Sie das aktuelle Zeichen, und wechseln Sie zum Einfügemodus.

  • Vi-Befehlsmodus: <s>

ViJoinLines

Verknüpft die aktuelle Zeile und die nächste Zeile.

  • Vi-Befehlsmodus: <J>

ViReplaceLine

Löschen Sie die gesamte Befehlszeile.

  • Vi-Befehlsmodus: <S>, <c,c>

ViReplaceToBeforeChar

Ersetzt bis zum angegebenen Zeichen.

  • Vi-Befehlsmodus: <c,t>

ViReplaceToBeforeCharBackward

Ersetzt bis zum angegebenen Zeichen.

  • Vi-Befehlsmodus: <c,T>

ViReplaceToChar

Löscht bis zum angegebenen Zeichen.

  • Vi-Befehlsmodus: <c,f>

ViReplaceToCharBackward

Ersetzt bis zum angegebenen Zeichen.

  • Vi-Befehlsmodus: <c,F>

ViYankBeginningOfLine

Yank vom Anfang des Puffers bis zum Cursor.

  • Vi-Befehlsmodus: <y,0>

ViYankEndOfGlob

Yank vom Cursor bis zum Ende der WORD(s).

  • Vi-Befehlsmodus: <y,E>

ViYankEndOfWord

Yank vom Cursor bis zum Ende des Worts.

  • Vi-Befehlsmodus: <y,e>

ViYankLeft

Yank Zeichen links vom Cursor.

  • Vi-Befehlsmodus: <y,h>

ViYankLine

Yank den gesamten Puffer.

  • Vi-Befehlsmodus: <y,y>

ViYankNextGlob

Yank vom Cursor zum Anfang der nächsten WORD(s).

  • Vi-Befehlsmodus: <y,W>

ViYankNextWord

Ziehe das Wort(en) nach dem Cursor.

  • Vi-Befehlsmodus: <y,w>

ViYankPercent

Yank to/from matching brace.

  • Vi-Befehlsmodus: <y,%>

ViYankPreviousGlob

Yank vom Anfang der WORD(s) zum Cursor.

  • Vi-Befehlsmodus: <y,B>

ViYankPreviousWord

Ziehe die Wörter vor den Cursor.

  • Vi-Befehlsmodus: <y,b>

ViYankRight

Yank-Zeichen unter und rechts neben dem Cursor.

  • Vi-Befehlsmodus: <y,l>, <y,Space>

ViYankToEndOfLine

Yank vom Cursor bis zum Ende des Puffers.

  • Vi-Befehlsmodus: <y,$>

ViYankToFirstChar

Yank vom ersten Nicht-Leerzeichen auf den Cursor.

  • Vi-Befehlsmodus: <y,^>

Yank

Fügen Sie der Eingabe den zuletzt beendeten Text hinzu.

  • Emacs: <Ctrl+y>

YankLastArg

Yank das letzte Argument aus der vorherigen Verlaufszeile. Bei einem Argument verhält sich das erste Mal, wenn es aufgerufen wird, genau wie YankNthArg. Wenn sie mehrmals aufgerufen wird, durchlaufen sie stattdessen den Verlauf und arg legt die Richtung fest (negativ kehrt die Richtung um.)

  • Befehl: <Alt+.>
  • Emacs: <Alt+.>, <Alt+_>, <Escape,.>, <Escape,_>

YankNthArg

Verwenden Sie das erste Argument (nach dem Befehl) aus der vorherigen Verlaufszeile. Yank mit einem Argument das nth-Argument (ab 0), wenn das Argument negativ ist, beginnen Sie mit dem letzten Argument.

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

YankPop

Wenn der vorherige Vorgang Yank oder YankPop war, ersetzen Sie den zuvor yannten Text durch den nächsten getöteten Text aus dem Kill-Ring.

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

Cursorbewegungsfunktionen

BackwardChar

Bewegen Sie den Cursor um ein Zeichen nach links. Dadurch kann der Cursor in die vorherige Zeile der mehrzeiligen Eingabe verschoben werden.

  • Befehl: <LeftArrow>
  • Emacs: <LeftArrow>, <Ctrl+b>
  • Vi Einfügemodus: <LeftArrow>
  • Vi-Befehlsmodus: <LeftArrow>, <Backspace>, <h>

BackwardWord

Bewegen Sie den Cursor zurück an den Anfang des aktuellen Worts, oder, wenn zwischen Wörtern, der Anfang des vorherigen Worts. Word Grenzen werden durch einen konfigurierbaren Satz von Zeichen definiert.

  • Befehl: <Ctrl+LeftArrow>
  • Emacs: <Alt+b>, <Escape,b>
  • Vi Einfügemodus: <Ctrl+LeftArrow>
  • Vi-Befehlsmodus: <Ctrl+LeftArrow>

BeginningOfLine

Wenn die Eingabe über mehrere Zeilen verfügt, bewegen Sie sich zum Anfang der aktuellen Zeile oder, wenn sie bereits am Anfang der Zeile steht, zum Anfang der Eingabe. Wenn die Eingabe über eine einzelne Zeile verfügt, wechseln Sie zum Anfang der Eingabe.

  • Befehl: <Home>
  • Emacs: <Home>, <Ctrl+a>
  • Vi Einfügemodus: <Home>
  • Vi-Befehlsmodus: <Home>

EndOfLine

Wenn die Eingabe über mehrere Zeilen verfügt, bewegen Sie sich an das Ende der aktuellen Zeile, oder bewegen Sie sich, wenn bereits am Ende der Zeile, an das Ende der Eingabe. Wenn die Eingabe über eine einzelne Zeile verfügt, bewegen Sie sich an das Ende der Eingabe.

  • Befehl: <End>
  • Emacs: <End>, <Ctrl+e>
  • Vi Einfügemodus: <End>

ForwardChar

Bewegen Sie den Cursor um ein Zeichen nach rechts. Dadurch kann der Cursor auf die nächste Zeile der mehrzeiligen Eingabe verschoben werden.

  • Befehl: <RightArrow>
  • Emacs: <RightArrow>, <Ctrl+f>
  • Vi Einfügemodus: <RightArrow>
  • Vi-Befehlsmodus: <RightArrow>, <Space>, <l>

ForwardWord

Bewegen Sie den Cursor an das Ende des aktuellen Worts oder wenn zwischen Wörtern, an das Ende des nächsten Worts. Word Grenzen werden durch einen konfigurierbaren Satz von Zeichen definiert.

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

GotoBrace

Wechseln Sie zur entsprechenden Klammer, Klammer oder eckigen Klammer.

  • Befehl: <Ctrl+]>
  • Vi Einfügemodus: <Ctrl+]>
  • Vi-Befehlsmodus: <Ctrl+]>

GotoColumn

Wechseln Sie zu der spalte, die von arg angegeben wird.

  • Vi-Befehlsmodus: <|>

GotoFirstNonBlankOfLine

Bewegen Sie den Cursor auf das erste nicht leere Zeichen in der Zeile.

  • Vi-Befehlsmodus: <^>

MoveToEndOfLine

Bewegen Sie den Cursor an das Ende der Eingabe.

  • Vi-Befehlsmodus: <End>, <$>

NextLine

Bewegen Sie den Cursor zur nächsten Zeile.

  • Die Funktion ist ungebunden.

NextWord

Bewegen Sie den Cursor an den Anfang des nächsten Worts. Word Grenzen werden durch einen konfigurierbaren Satz von Zeichen definiert.

  • Befehl: <Ctrl+RightArrow>
  • Vi Einfügemodus: <Ctrl+RightArrow>
  • Vi-Befehlsmodus: <Ctrl+RightArrow>

NextWordEnd

Bewegen Sie den Cursor an das Ende des aktuellen Worts oder wenn zwischen Wörtern, an das Ende des nächsten Worts. Word Grenzen werden durch einen konfigurierbaren Satz von Zeichen definiert.

  • Vi-Befehlsmodus: <e>

PreviousLine

Bewegen Sie den Cursor zur vorherigen Zeile.

  • Die Funktion ist ungebunden.

ShellBackwardWord

Bewegen Sie den Cursor zurück an den Anfang des aktuellen Worts, oder, wenn zwischen Wörtern, der Anfang des vorherigen Worts. Word Grenzen werden durch PowerShell-Token definiert.

  • Die Funktion ist ungebunden.

ShellForwardWord

Bewegen Sie den Cursor an den Anfang des nächsten Worts. Word Grenzen werden durch PowerShell-Token definiert.

  • Die Funktion ist ungebunden.

ShellNextWord

Bewegen Sie den Cursor an das Ende des aktuellen Worts oder wenn zwischen Wörtern, an das Ende des nächsten Worts. Word Grenzen werden durch PowerShell-Token definiert.

  • Die Funktion ist ungebunden.

ViBackwardWord

Bewegen Sie den Cursor zurück an den Anfang des aktuellen Worts, oder, wenn zwischen Wörtern, der Anfang des vorherigen Worts. Word Grenzen werden durch einen konfigurierbaren Satz von Zeichen definiert.

  • Vi-Befehlsmodus: <b>

ViEndOfGlob

Verschiebt den Cursor an das Ende des Worts, wobei nur Leerzeichen als Trennzeichen verwendet werden.

  • Vi-Befehlsmodus: <E>

ViEndOfPreviousGlob

Wird an das Ende des vorherigen Worts verschoben, wobei nur Leerzeichen als Worttrennzeichen verwendet werden.

  • Die Funktion ist ungebunden.

ViGotoBrace

Ähnlich wie GotoBrace, ist aber zeichenbasiert statt tokenbasiert.

  • Vi-Befehlsmodus: <%>

ViNextGlob

Wechselt zum nächsten Wort, wobei nur Leerzeichen als Worttrennzeichen verwendet werden.

  • Vi-Befehlsmodus: <W>

ViNextWord

Bewegen Sie den Cursor an den Anfang des nächsten Worts. Word Grenzen werden durch einen konfigurierbaren Satz von Zeichen definiert.

  • Vi-Befehlsmodus: <w>

Verlaufsfunktionen

BeginningOfHistory

Wechseln Sie zum ersten Element im Verlauf.

  • Emacs: <Alt+<>'

ClearHistory

Löscht den Verlauf in PSReadLine. Dies wirkt sich nicht auf den PowerShell-Verlauf aus.

  • Befehl: <Alt+F7>

EndOfHistory

Wechseln Sie zum letzten Element (der aktuellen Eingabe) im Verlauf.

  • Emacs: <Alt+>>

ForwardSearchHistory

Führen Sie eine inkrementelle Vorwärtssuche durch den Verlauf aus.

  • Befehl: <Ctrl+s>
  • Emacs: <Ctrl+s>

HistorySearchBackward

Ersetzen Sie die aktuelle Eingabe durch das Element "vorherige" aus dem PSReadLine-Verlauf, das den Zeichen zwischen dem Start und der Eingabe und dem Cursor entspricht.

  • Befehl: <F8>

HistorySearchForward

Ersetzen Sie die aktuelle Eingabe durch das Element "Weiter" aus dem PSReadLine-Verlauf, das den Zeichen zwischen dem Start, der Eingabe und dem Cursor entspricht.

  • Befehl: <Shift+F8>

NextHistory

Ersetzen Sie die aktuelle Eingabe durch das Element "Next" aus dem PSReadLine-Verlauf.

  • Befehl: <DownArrow>
  • Emacs: <DownArrow>, <Ctrl+n>
  • Vi Einfügemodus: <DownArrow>
  • Vi-Befehlsmodus: <DownArrow>, <j>, <+>

PreviousHistory

Ersetzen Sie die aktuelle Eingabe durch das Element "vorherige" aus dem PSReadLine-Verlauf.

  • Befehl: <UpArrow>
  • Emacs: <UpArrow>, <Ctrl+p>
  • Vi Einfügemodus: <UpArrow>
  • Vi-Befehlsmodus: <UpArrow>, <k>, <->

ReverseSearchHistory

Führen Sie eine inkrementelle Rückwärtssuche durch den Verlauf aus.

  • Befehl: <Ctrl+r>
  • Emacs: <Ctrl+r>

ViSearchHistoryBackward

Fordert eine Suchzeichenfolge auf und initiiert die Suche nach AcceptLine.

  • Vi Einfügemodus: <Ctrl+r>
  • Vi-Befehlsmodus: </>, <Ctrl+r>

Vervollständigungsfunktionen

Abgeschlossen

Versuchen Sie, den Text, der den Cursor umgibt, zu vervollständigen. Wenn mehrere mögliche Vervollständigungen vorhanden sind, wird das längste eindeutige Präfix für die Vervollständigung verwendet. Wenn Sie versuchen, die längste eindeutige Vervollständigung abzuschließen, wird eine Liste der möglichen Vervollständigungen angezeigt.

  • Emacs: <Tab>

Versuchen Sie, den Text, der den Cursor umgibt, zu vervollständigen. Wenn mehrere mögliche Vervollständigungen vorhanden sind, wird das längste eindeutige Präfix für die Vervollständigung verwendet. Wenn Sie versuchen, die längste eindeutige Vervollständigung abzuschließen, wird eine Liste der möglichen Vervollständigungen angezeigt.

  • Befehl: <Ctrl+Space>
  • Emacs: <Ctrl+Space>

MöglicheCompletions

Zeigt die Liste der möglichen Vervollständigungen an.

  • Emacs: <Alt+=>
  • Vi Einfügemodus: <Ctrl+Space>
  • Vi-Befehlsmodus: <Ctrl+Space>

TabVervollständigenWeiter

Versuchen Sie, den Text, der den Cursor umgibt, mit der nächsten verfügbaren Vervollständigung zu vervollständigen.

  • Befehl: <Tab>
  • Vi-Befehlsmodus: <Tab>

TabCompletePrevious

Versuchen Sie, den Text, der den Cursor umgibt, mit der vorherigen verfügbaren Vervollständigung zu vervollständigen.

  • Befehl: <Shift+Tab>
  • Vi-Befehlsmodus: <Shift+Tab>

ViTabCompleteWeiter

Beendet bei Bedarf die aktuelle Bearbeitungsgruppe und ruft TabCompleteNext auf.

  • Vi-Einfügemodus: <Tab>

ViTabCompletePrevious

Beendet bei Bedarf die aktuelle Bearbeitungsgruppe und ruft TabCompletePrevious auf.

  • Vi-Einfügemodus: <Shift+Tab>

Sonstige Funktionen

CaptureScreen

Interaktive Bildschirmaufnahme starten: Nach oben/unten wählen Sie Linien aus, und geben Sie Kopien des ausgewählten Texts in die Zwischenablage als Text und HTML ein.

  • Die Funktion ist ungebunden.

ClearScreen

Deaktivieren Sie den Bildschirm, und zeichnen Sie die aktuelle Linie oben auf dem Bildschirm.

  • Befehl: <Ctrl+l>
  • Emacs: <Ctrl+l>
  • Vi-Einfügemodus: <Ctrl+l>
  • Vi-Befehlsmodus: <Ctrl+l>

DigitArgument

Starten Sie ein neues Ziffernargument, das an andere Funktionen übergeben werden soll.

  • Cmd: <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-Befehlsmodus: <0>, <1>, <2>, <3>, <5><4>, <6>, <7>, , <8>,<9>

InvokePrompt

Löscht die aktuelle Eingabeaufforderung und ruft die Eingabeaufforderungsfunktion auf, um die Eingabeaufforderung erneut anzuzeigen. Nützlich für benutzerdefinierte Schlüsselhandler, die den Zustand ändern, z. B. das aktuelle Verzeichnis ändern.

  • Die Funktion ist ungebunden.

ScrollDisplayDown

Scrollen Sie die Anzeige um einen Bildschirm nach unten.

  • Befehl: <PageDown>
  • Emacs: <PageDown>

ScrollDisplayDownLine

Scrollen Sie die Anzeige um eine Zeile nach unten.

  • Befehl: <Ctrl+PageDown>
  • Emacs: <Ctrl+PageDown>

ScrollDisplayToCursor

Scrollen Sie in der Anzeige zum Cursor.

  • Emacs: <Ctrl+End>

ScrollDisplayTop

Scrollen Sie in der Anzeige nach oben.

  • Emacs: <Ctrl+Home>

ScrollDisplayUp

Scrollen Sie auf der Anzeige um einen Bildschirm nach oben.

  • Befehl: <PageUp>
  • Emacs: <PageUp>

ScrollDisplayUpLine

Scrollen Sie die Anzeige um eine Zeile nach oben.

  • Befehl: <Ctrl+PageUp>
  • Emacs: <Ctrl+PageUp>

SelfInsert

Fügen Sie den Schlüssel ein.

  • Die Funktion ist ungebunden.

ShowKeyBindings

Alle gebundenen Schlüssel anzeigen.

  • Befehl: <Ctrl+Alt+?>
  • Emacs: <Ctrl+Alt+?>
  • Vi-Einfügemodus: <Ctrl+Alt+?>

ViCommandMode

Wechseln Sie den aktuellen Betriebsmodus von Vi-Insert zu Vi-Command.

  • Vi-Einfügemodus: <Escape>

ViDigitArgumentInChord

Starten Sie ein neues Ziffernargument, das an andere Funktionen übergeben wird, während sie sich in einem der Akkorde von vi befindet.

  • Die Funktion ist ungebunden.

ViEditVisually

Bearbeiten Sie die Befehlszeile in einem Text-Editor, der von $env:EDITOR oder $env:VISUAL angegeben wird.

  • Emacs: <Ctrl+x,Ctrl+e>
  • Vi-Befehlsmodus: <v>

ViExit

Beendet die Shell.

  • Die Funktion ist ungebunden.

ViInsertMode

Wechseln Sie in den Einfügemodus.

  • Vi-Befehlsmodus: <i>

WhatIsKey

Lesen Sie einen Schlüssel, und teilen Sie mir mit, an was der Schlüssel gebunden ist.

  • Befehl: <Alt+?>
  • Emacs: <Alt+?>

Auswahlfunktionen

ExchangePointAndMark

Der Cursor wird an der Position der Markierung platziert, und die Markierung wird an die Position des Cursors verschoben.

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

SelectAll

Wählen Sie die gesamte Zeile aus.

  • Befehl: <Ctrl+a>

SelectBackwardChar

Passen Sie die aktuelle Auswahl so an, dass sie das vorherige Zeichen enthält.

  • Befehl: <Shift+LeftArrow>
  • Emacs: <Shift+LeftArrow>

SelectBackwardsLine

Passen Sie die aktuelle Auswahl an, die vom Cursor bis zum Anfang der Zeile eingeschlossen werden soll.

  • Befehl: <Shift+Home>
  • Emacs: <Shift+Home>

SelectBackwardWord

Passen Sie die aktuelle Auswahl an, um das vorherige Wort einzuschließen.

  • Befehl: <Shift+Ctrl+LeftArrow>
  • Emacs: <Alt+B>

SelectForwardChar

Passen Sie die aktuelle Auswahl so an, dass sie das nächste Zeichen enthält.

  • Befehl: <Shift+RightArrow>
  • Emacs: <Shift+RightArrow>

SelectForwardWord

Passen Sie die aktuelle Auswahl so an, dass das nächste Wort mithilfe von ForwardWord eingeschlossen wird.

  • Emacs: <Alt+F>

SelectLine

Passen Sie die aktuelle Auswahl an, die vom Cursor bis zum Ende der Zeile eingeschlossen werden soll.

  • Befehl: <Shift+End>
  • Emacs: <Shift+End>

SelectNextWord

Passen Sie die aktuelle Auswahl so an, dass sie das nächste Wort einschließt.

  • Befehl: <Shift+Ctrl+RightArrow>

SelectShellBackwardWord

Passen Sie die aktuelle Auswahl so an, dass sie das vorherige Wort mit ShellBackwardWord einschließt.

  • Die Funktion ist ungebunden.

SelectShellForwardWord

Passen Sie die aktuelle Auswahl so an, dass sie das nächste Wort mit ShellForwardWord einschließt.

  • Die Funktion ist ungebunden.

SelectShellNextWord

Passen Sie die aktuelle Auswahl so an, dass sie das nächste Wort mit ShellNextWord einschließt.

  • Die Funktion ist ungebunden.

SetMark

Markieren Sie die aktuelle Position des Cursors zur Verwendung in einem nachfolgenden Bearbeitungsbefehl.

  • Emacs: <Ctrl+>'

Search Funktionen

CharacterSearch

Lesen Sie ein Zeichen, und suchen Sie nach dem nächsten Vorkommen dieses Zeichens. Wenn ein Argument angegeben ist, suchen Sie vorwärts (oder rückwärts, wenn negativ) nach dem n-ten Vorkommen.

  • Befehl: <F3>
  • Emacs: <Ctrl+]>
  • Vi Einfügemodus: <F3>
  • Vi-Befehlsmodus: <F3>

CharacterSearchBackward

Lesen Sie ein Zeichen, und suchen Sie rückwärts nach dem nächsten Vorkommen dieses Zeichens. Wenn ein Argument angegeben wird, suchen Sie rückwärts (oder vorwärts, wenn negativ) nach dem n-ten Vorkommen.

  • Befehl: <Shift+F3>
  • Emacs: <Ctrl+Alt+]>
  • Vi Einfügemodus: <Shift+F3>
  • Vi-Befehlsmodus: <Shift+F3>

RepeatLastCharSearch

Wiederholen Sie die zuletzt aufgezeichnete Zeichensuche.

  • Vi-Befehlsmodus: <;>

RepeatLastCharSearchBackwards

Wiederholen Sie die zuletzt aufgezeichnete Zeichensuche, jedoch in umgekehrter Richtung.

  • Vi-Befehlsmodus: <,>

RepeatSearch

Wiederholen Sie die letzte Suche in die gleiche Richtung wie zuvor.

  • Vi-Befehlsmodus: <n>

RepeatSearchBackward

Wiederholen Sie die letzte Suche in die gleiche Richtung wie zuvor.

  • Vi-Befehlsmodus: <N>

SearchChar

Lesen Sie das nächste Zeichen, und suchen Sie es dann nach vorne, und kehren Sie dann von einem Zeichen zurück. Dies gilt für die "T"-Funktionalität.

  • Vi-Befehlsmodus: <f>

SearchCharBackward

Lesen Sie das nächste Zeichen, und suchen Sie es dann, rückwärts und dann zurück von einem Zeichen. Dies gilt für die "T"-Funktionalität.

  • Vi-Befehlsmodus: <F>

SearchCharBackwardWithBackoff

Lesen Sie das nächste Zeichen, und suchen Sie es dann, rückwärts und dann zurück von einem Zeichen. Dies gilt für die "T"-Funktionalität.

  • Vi-Befehlsmodus: <T>

SearchCharWithBackoff

Lesen Sie das nächste Zeichen, und suchen Sie es dann nach vorne, und kehren Sie dann von einem Zeichen zurück. Dies gilt für die "T"-Funktionalität.

  • Vi-Befehlsmodus: <t>

Searchforward

Fordert eine Suchzeichenfolge auf und initiiert die Suche nach AcceptLine.

  • Vi Einfügemodus: <Ctrl+s>
  • Vi-Befehlsmodus: <?>, <Ctrl+s>

Benutzerdefinierte Schlüsselbindungen

PSReadLine unterstützt benutzerdefinierte Schlüsselbindungen mithilfe des Cmdlets Set-PSReadLineKeyHandler. Die meisten benutzerdefinierten Schlüsselbindungen rufen eine der oben genannten Funktionen auf, z. B.

Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward

Sie können einen ScriptBlock an einen Schlüssel binden. Der ScriptBlock kann so ziemlich alles tun, was Sie möchten. Einige nützliche Beispiele sind:

  • Bearbeiten der Befehlszeile
  • Öffnen eines neuen Fensters (z. B. Hilfe)
  • Verzeichnisse ändern, ohne die Befehlszeile zu ändern

Der ScriptBlock empfängt zwei Argumente:

  • $key – Ein [ConsoleKeyInfo]- Objekt, das der Schlüssel ist, der die benutzerdefinierte Bindung ausgelöst hat. Wenn Sie denselben ScriptBlock an mehrere Schlüssel binden und je nach Schlüssel unterschiedliche Aktionen ausführen müssen, können Sie $key überprüfen. Viele benutzerdefinierte Bindungen ignorieren dieses Argument.

  • $arg – Ein beliebiges Argument. In den meisten Fällen ist dies ein ganzzahliges Argument, das der Benutzer von den Schlüsselbindungen DigitArgument übergibt. Wenn Ihre Bindung keine Argumente akzeptiert, ist es sinnvoll, dieses Argument zu ignorieren.

Sehen wir uns ein Beispiel an, das dem Verlauf eine Befehlszeile hinzufügt, ohne sie auszuführen. Dies ist nützlich, wenn Sie feststellen, dass Sie etwas vergessen haben, aber die bereits eingegebene Befehlszeile nicht erneut eingeben möchten.

$parameters = @{
    Key = 'Alt+w'
    BriefDescription = 'SaveInHistory'
    LongDescription = 'Save current line in history but do not execute'
    ScriptBlock = {
      param($key, $arg)   # The arguments are ignored in this example

      # GetBufferState gives us the command line (with the cursor position)
      $line = $null
      $cursor = $null
      [Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line,
        [ref]$cursor)

      # AddToHistory saves the line in history, but does not execute it.
      [Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)

      # RevertLine is like pressing Escape.
      [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
  }
}
Set-PSReadLineKeyHandler @parameters

Sie sehen viele weitere Beispiele in der Datei SamplePSReadLineProfile.ps1 , die im PSReadLine-Modulordner installiert ist.

Die meisten Schlüsselbindungen verwenden einige Hilfsfunktionen zum Bearbeiten der Befehlszeile. Diese APIs werden im nächsten Abschnitt dokumentiert.

Unterstützungs-APIs für benutzerdefinierte Schlüsselbindung

Die folgenden Funktionen sind in Microsoft.PowerShell.PSConsoleReadLine öffentlich, können aber nicht direkt an einen Schlüssel gebunden werden. Die meisten sind bei benutzerdefinierten Schlüsselbindungen nützlich.

void AddToHistory(string command)

Fügen Sie dem Verlauf eine Befehlszeile hinzu, ohne ihn auszuführen.

void ClearKillRing()

Löschen Sie den Killring. Dies wird hauptsächlich zum Testen verwendet.

void Delete(int start, int length)

Löschen Sie Längenzeichen von Anfang an. Dieser Vorgang unterstützt Rückgängig/Wiederholen.

void Ding()

Führen Sie die Ding-Aktion basierend auf der Benutzereinstellung aus.

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

Diese beiden Funktionen rufen nützliche Informationen zum aktuellen Zustand des Eingabepuffers ab. Die erste wird häufiger für einfache Fälle verwendet. Die zweite wird verwendet, wenn Ihre Bindung etwas fortgeschrittener mit dem Ast ausführt.

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

Diese Funktion wird von Get-PSReadLineKeyHandler verwendet und ist in einer benutzerdefinierten Schlüsselbindung wahrscheinlich nicht nützlich.

Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()

Diese Funktion wird von Get-PSReadLineOption verwendet und ist in einer benutzerdefinierten Schlüsselbindung wahrscheinlich nicht besonders nützlich.

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

Wenn keine Auswahl in der Befehlszeile vorhanden ist, wird -1 sowohl in start als auch in der Länge zurückgegeben. Wenn in der Befehlszeile eine Auswahl vorhanden ist, werden der Anfang und die Länge der Auswahl zurückgegeben.

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

Fügen Sie ein Zeichen oder eine Zeichenfolge am Cursor ein. Dieser Vorgang unterstützt rückgängig/wiederholen.

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

Dies ist der Standard Einstiegspunkt zu PSReadLine. Die Rekursion wird nicht unterstützt, daher ist es bei einer benutzerdefinierten Schlüsselbindung nicht nützlich.

void RemoveKeyHandler(string[] key)

Diese Funktion wird von Remove-PSReadLineKeyHandler verwendet und ist in einer benutzerdefinierten Schlüsselbindung wahrscheinlich nicht besonders nützlich.

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

Ersetzen Sie einen Teil der Eingabe. Dieser Vorgang unterstützt rückgängig/wiederholen. Dies wird vor "Löschen" gefolgt von "Einfügen" bevorzugt, da es als einzelne Aktion zum Rückgängigmachen behandelt wird.

void SetCursorPosition(int cursor)

Bewegen Sie den Cursor auf den angegebenen Offset. Die Cursorbewegung wird nicht zum Rückgängigmachen nachverfolgt.

void SetOptions(Microsoft.PowerShell.SetPSReadLineOption options)

Diese Funktion ist eine Hilfsmethode, die vom Cmdlet Set-PSReadLineOption verwendet wird, kann jedoch für eine benutzerdefinierte Schlüsselbindung nützlich sein, die eine Einstellung vorübergehend ändern möchte.

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

Diese Hilfsmethode wird für benutzerdefinierte Bindungen verwendet, die DigitArgument berücksichtigen. Ein typischer Anruf sieht wie folgt aus:

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

Hinweis

Befehlsverlauf

PSReadLine verwaltet eine Verlaufsdatei mit allen Befehlen und Daten, die Sie über die Befehlszeile eingegeben haben. Dies kann vertrauliche Daten einschließlich Kennwörtern enthalten. Wenn Sie beispielsweise das ConvertTo-SecureString Cmdlet verwenden, wird das Kennwort in der Verlaufsdatei als Nur-Text protokolliert. Die Verlaufsdateien sind eine Datei namens $($host.Name)_history.txt. Auf Windows-Systemen wird die Verlaufsdatei unter $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLinegespeichert. Auf Nicht-Windows-Systemen werden die Verlaufsdateien unter $env:XDG_DATA_HOME/powershell/PSReadLine oder $env:HOME/.local/share/powershell/PSReadLinegespeichert.

Feedback & Beiträge zu PSReadLine

PSReadLine auf GitHub

Sie können einen Pull Request senden oder Feedback auf der GitHub-Seite übermitteln.

Weitere Informationen

PSReadLine wird stark von der GNU-Leselinienbibliothek beeinflusst.