Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Über_PSReadLine
KURZE BESCHREIBUNG
PSReadLine bietet eine verbesserte Befehlszeilenbearbeitung in der PowerShell-Konsole.
LANGE BESCHREIBUNG
PSReadLine bietet eine leistungsstarke Befehlszeilenbearbeitung für die PowerShell-Konsole. Sie bietet:
- Syntaxfarbe der Befehlszeile
- Ein visueller Hinweis auf Syntaxfehler
- Eine bessere mehrzeilige Erfahrung (sowohl Bearbeiten als auch Verlauf)
- Anpassbare Tastenbindungen
- Cmd- und Emacs-Modi
- Viele Konfigurationsoptionen
- Abschluss der Bash-Formatvorlage (optional im Cmd-Modus, Standard im Emacs-Modus)
- Emacs reißt/tötet den Ring
- PowerShell-Token-basiertes "Word"-Verschieben und Beenden
Die folgenden Funktionen sind in der Klasse [Microsoft.PowerShell.PSConsoleReadLine] verfügbar.
Cursorbewegung
EndeOfLine
- Befehl:
<End> - Emacs:
<End>oder<Ctrl+E>
Wenn die Eingabe mehrere Zeilen enthält, wechseln Sie zum Ende der aktuellen Zeile oder wenn sie sich bereits am Ende der Zeile befindet, wechseln Sie zum Ende der Eingabe. Wenn die Eingabe über eine einzelne Zeile verfügt, wechseln Sie zum Ende der Eingabe.
AnfangDerLinie
- Befehl:
<Home> - Emacs:
<Home>oder<Ctrl+A>
Wenn die Eingabe über mehrere Zeilen verfügt, wechseln Sie zum Anfang der aktuellen Zeile oder wenn sie bereits am Anfang der Zeile stehen, wechseln Sie zum Anfang der Eingabe. Wenn die Eingabe über eine einzelne Zeile verfügt, wechseln Sie zum Anfang der Eingabe.
NächsteLinie
- Cmd: ungebunden
- Emacs: ungebunden
Bewegen Sie den Cursor in die nächste Zeile, wenn die Eingabe mehrere Zeilen hat.
PreviousLine
- Cmd: ungebunden
- Emacs: ungebunden
Bewegen Sie den Cursor in die vorherige Zeile, wenn die Eingabe mehrere Zeilen hat.
ForwardChar (VorwärtsChar)
- Befehl:
<RightArrow> - Emacs:
<RightArrow>oder<Ctrl+F>
Bewegen Sie den Cursor um ein Zeichen nach rechts. Dadurch wird der Cursor möglicherweise in die nächste Zeile der mehrzeiligen Eingabe verschoben.
RückwärtsChar
- Befehl:
<LeftArrow> - Emacs:
<LeftArrow>oder<Ctrl+B>
Bewegen Sie den Cursor um ein Zeichen nach links. Dadurch wird der Cursor möglicherweise in die vorherige Zeile der mehrzeiligen Eingabe verschoben.
Vorwärtswort
- Cmd: ungebunden
- Emacs:
<Alt+F>
Bewegen Sie den Cursor an das Ende des aktuellen Worts oder zwischen Wörtern bis zum Ende des nächsten Worts. Sie können Worttrennzeichen wie folgt setzen:
Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`
NächstesWort
- Befehl:
<Ctrl+RightArrow> - Emacs: ungebunden
Bewegen Sie den Cursor nach vorne an den Anfang des nächsten Worts. Sie können Worttrennzeichen wie folgt setzen:
Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`
RückwärtsWort
- Befehl:
<Ctrl+LeftArrow> - Emacs:
<Alt+B>
Bewegen Sie den Cursor zurück zum Anfang des aktuellen Worts oder zwischen Wörtern, dem Anfang des vorherigen Worts. Sie können Worttrennzeichen wie folgt setzen:
Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`
ShellForwardWord
- Cmd: ungebunden
- Emacs: ungebunden
Wie ForwardWord, mit der Ausnahme, dass Wortgrenzen durch PowerShell-Tokengrenzen definiert werden.
ShellNextWord
- Cmd: ungebunden
- Emacs: ungebunden
Wie NextWord, mit der Ausnahme, dass Wortgrenzen durch PowerShell-Tokengrenzen definiert werden.
ShellBackwardWord
- Cmd: ungebunden
- Emacs: ungebunden
Wie BackwardWord, mit der Ausnahme, dass Wortgrenzen durch PowerShell-Tokengrenzen definiert werden.
GotoBrace
- Befehl:
<Ctrl+}> - Emacs: ungebunden
Wechseln Sie zur entsprechenden Klammer, geschweiften Klammer oder eckigen Klammer.
Linie hinzufügen
- Befehl:
<Shift-Enter> - Emacs:
<Shift-Enter>
Die Fortsetzungsaufforderung wird in der nächsten Zeile angezeigt, und PSReadLine wartet auf Tasten, um die aktuelle Eingabe zu bearbeiten. Dies ist nützlich, um mehrzeilige Eingaben als einzelner Befehl einzugeben, auch wenn eine einzelne Zeile die Eingabe selbst abgeschlossen ist.
Grundlegende Bearbeitung
Stornieren
- Cmd: ungebunden
- Emacs: ungebunden
Brechen Sie alle Änderungen an der Zeile ab, lassen Sie die Eingabezeile auf dem Bildschirm, kehren Sie jedoch von PSReadLine zurück, ohne die Eingabe auszuführen.
RevertLine
- Befehl:
<ESC> - Emacs:
<Alt+R>
Macht alle Eingaben rückgängig, seit die letzte Eingabe akzeptiert und ausgeführt wurde. Dies entspricht der Verwendung des Befehls Rückgängig, bis nichts mehr rückgängig gemacht werden kann.
BackwardDeleteChar
- Befehl:
<Backspace> - Emacs:
<Backspace>oder<Ctrl+H>
Löschen Sie das Zeichen vor dem Cursor.
DeleteChar
- Befehl:
<Delete> - Emacs:
<Delete>
Löschen Sie das Zeichen unter dem Cursor.
DeleteCharOrExit
- Cmd: ungebunden
- Emacs:
<Ctrl+D>
Wie DeleteChar, es sei denn, die Zeile ist leer, in diesem Fall wird der Prozess beendet.
AcceptLine (Akzeptieren)
- Befehl:
<Enter> - Emacs:
<Enter>oder<Ctrl+M>
Versuchen Sie, die aktuelle Eingabe auszuführen. Wenn die aktuelle Eingabe unvollständig ist (z. B. fehlen eine schließende Klammer, eine eckige Klammer oder ein Anführungszeichen), wird die Fortsetzungsaufforderung in der nächsten Zeile angezeigt, und PSReadLine wartet auf Tasten, um die aktuelle Eingabe zu bearbeiten.
AkzeptierenUndAbrufenWeiter
- Cmd: ungebunden
- Emacs:
<Ctrl+O>
Wie AcceptLine, aber nachdem die Zeile abgeschlossen ist, beginnen Sie mit der Bearbeitung der nächsten Zeile aus dem Verlauf.
ValidateAndAcceptLine
- Cmd: ungebunden
- Emacs: ungebunden
Wie AcceptLine, führt jedoch eine zusätzliche Validierung durch, einschließlich:
- Sucht nach zusätzlichen Analysefehlern
- Überprüft, ob alle Befehlsnamen gefunden wurden
- Wenn Sie PowerShell 4.0 oder höher ausführen, werden die Parameter und Argumente überprüft
Wenn Fehler auftreten, wird die Fehlermeldung angezeigt und weder akzeptiert noch dem Verlauf hinzugefügt, es sei denn, Sie korrigieren entweder die Befehlszeile oder führen AcceptLine oder ValidateAndAcceptLine erneut aus, während die Fehlermeldung angezeigt wird.
RückwärtsLöschenZeile
- Befehl:
<Ctrl+Home> - Emacs: ungebunden
Löscht den Text vom Anfang der Eingabe bis zum Cursor.
VorwärtsLöschenZeile
- Befehl:
<Ctrl+End> - Emacs: ungebunden
Löschen Sie den Text vom Cursor bis zum Ende der Eingabe.
SelectBackwardChar
- Befehl:
<Shift+LeftArrow> - Emacs:
<Shift+LeftArrow>
Passen Sie die aktuelle Auswahl an, um das vorherige Zeichen einzuschließen.
SelectForwardChar
- Befehl:
<Shift+RightArrow> - Emacs:
<Shift+RightArrow>
Passen Sie die aktuelle Auswahl an, um das nächste Zeichen einzuschließen.
AuswählenRückwärtsWort
- Befehl:
<Shift+Ctrl+LeftArrow> - Emacs:
<Alt+Shift+B>
Passen Sie die aktuelle Auswahl an, um das vorherige Wort einzuschließen.
AuswählenForwardWord
- Cmd: ungebunden
- Emacs:
<Alt+Shift+F>
Passen Sie die aktuelle Auswahl an, um das nächste Wort mithilfe von ForwardWord einzuschließen.
AuswählenNächstesWort
- Befehl:
<Shift+Ctrl+RightArrow> - Emacs: ungebunden
Passen Sie die aktuelle Auswahl mit NextWord so an, dass sie das nächste Wort enthält.
AuswählenShellForwardWord
- Cmd: ungebunden
- Emacs: ungebunden
Passen Sie die aktuelle Auswahl an, um das nächste Wort mithilfe von ShellForwardWord einzuschließen.
SelectShellNextWord
- Cmd: ungebunden
- Emacs: ungebunden
Passen Sie die aktuelle Auswahl an, um das nächste Wort mithilfe von ShellNextWord einzuschließen.
SelectShellBackwardWord
- Cmd: ungebunden
- Emacs: ungebunden
Passen Sie die aktuelle Auswahl an, um das vorherige Wort mithilfe von ShellBackwardWord einzuschließen.
AuswählenRückwärtsLinie
- Befehl:
<Shift+Home> - Emacs:
<Shift+Home>
Passen Sie die aktuelle Auswahl an, um sie vom Cursor an den Anfang der Zeile einzuschließen.
Linie auswählen
- Befehl:
<Shift+End> - Emacs:
<Shift+End>
Passen Sie die aktuelle Auswahl an, um sie vom Cursor bis zum Ende der Zeile einzuschließen.
Alles auswählen
- Befehl:
<Ctrl+A> - Emacs: ungebunden
Markieren Sie die gesamte Zeile. Verschiebt den Cursor an das Ende der Zeile.
SelbstEinfügen
- Cmd:
<a>,<b>, ... - Emacs:
<a>,<b>, ...
Geben Sie den eingegebenen Schlüssel ein.
Wiederholen
- Befehl:
<Ctrl+Y> - Emacs: ungebunden
Wiederholen Sie ein Einfügen oder Löschen, das durch Rückgängig rückgängig gemacht wurde.
Rückgängig machen
- Befehl:
<Ctrl+Z> - Emacs:
<Ctrl+_>
Machen Sie ein vorheriges Einfügen oder Löschen rückgängig.
Geschichte
Klare Geschichte
- Befehl:
<Alt+F7> - Emacs: ungebunden
Löscht den Verlauf in PSReadLine. Dies wirkt sich nicht auf den PowerShell-Verlauf aus.
PreviousGeschichte
- Befehl:
<UpArrow> - Emacs:
<UpArrow>oder<Ctrl+P>
Ersetzen Sie die aktuelle Eingabe durch das vorherige Element aus dem PSReadLine-Verlauf.
NächsteGeschichte
- Befehl:
<DownArrow> - Emacs:
<DownArrow>oder<Ctrl+N>
Ersetzen Sie die aktuelle Eingabe durch das nächste Element aus dem PSReadLine-Verlauf.
ForwardSearchGeschichte
- Befehl:
<Ctrl+S> - Emacs:
<Ctrl+S>
Suchen Sie interaktiv von der aktuellen Verlaufszeile aus nach vorne.
ReverseSearchGeschichte
- Befehl:
<Ctrl+R> - Emacs:
<Ctrl+R>
Interaktiv von der aktuellen Verlaufszeile rückwärts suchen.
GeschichteSuchenRückwärts
- Befehl:
<F8> - Emacs: ungebunden
Ersetzen Sie die aktuelle Eingabe durch das vorherige Element aus dem PSReadLine-Verlauf, das den Zeichen zwischen dem Start, der Eingabe und dem Cursor entspricht.
GeschichteSearchForward
- Befehl:
<Shift+F8> - Emacs: ungebunden
Ersetzen Sie die aktuelle Eingabe durch das nächste Element aus dem PSReadLine-Verlauf, das den Zeichen zwischen dem Start, der Eingabe und dem Cursor entspricht.
AnfangDerGeschichte
- Cmd: ungebunden
- Emacs:
<Alt+<>
Ersetzen Sie die aktuelle Eingabe durch das letzte Element aus dem PSReadLine-Verlauf.
EndeDerGeschichte
- Cmd: ungebunden
- Emacs:
<Alt+>>
Ersetzen Sie die aktuelle Eingabe durch das letzte Element im PSReadLine-Verlauf, d. h. die möglicherweise leere Eingabe, die vor allen Verlaufsbefehlen eingegeben wurde.
Tab-Vervollständigung
TabCompleteWeiter
- Befehl:
<Tab> - Emacs: ungebunden
Versuchen Sie, den Text, der den Cursor umgibt, mit dem nächsten verfügbaren Abschluss abzuschließen.
TabCompletePrevious
- Befehl:
<Shift-Tab> - Emacs: ungebunden
Versuchen Sie, den Text, der den Cursor umgibt, mit der nächsten vorherigen Vervollständigung zu vervollständigen.
Vollständig
- Cmd: ungebunden
- Emacs:
<Tab>
Versuchen Sie, die Fertigstellung des Texts auszuführen, der den Cursor umgibt. Wenn mehrere mögliche Vervollständigungen vorhanden sind, wird das längste eindeutige Präfix für den Abschluss verwendet. Wenn Sie versuchen, den längsten eindeutigen Abschluss abzuschließen, wird eine Liste möglicher Vervollständigungen angezeigt.
MenüKomplett
- Befehl:
<Ctrl+Space> - Emacs:
<Ctrl+Space>
Versuchen Sie, die Fertigstellung des Texts auszuführen, der den Cursor umgibt. Wenn mehrere mögliche Vervollständigungen vorhanden sind, wird eine Liste möglicher Vervollständigungen angezeigt, und Sie können die richtige Vervollständigung mit den Pfeiltasten oder mit der TAB/UMSCHALT+TAB auswählen. Mit der ESCAPE-Taste und STRG+G wird die Menüauswahl abgebrochen, und setzen Sie die Zeile auf den Zustand zurück, bevor Sie MenuComplete aufgerufen haben.
Mögliche Fertigstellungen
- Cmd: ungebunden
- Emacs:
<Alt+Equals>
Zeigt die Liste der möglichen Fertigstellungen an.
Markieren
- Cmd: ungebunden
- Emacs:
<Alt+Space>
Markieren Sie die aktuelle Position des Cursors für die Verwendung in einem nachfolgenden Bearbeitungsbefehl.
ExchangePointAndMark
- Cmd: ungebunden
- Emacs:
<Ctrl+X,Ctrl+X>
Der Cursor wird an der Position der Markierung platziert, und die Markierung wird an die Position des Cursors verschoben.
Töten/Reißen
Kill und Yank arbeiten in einer Zwischenablage im PSReadLine-Modul. Es gibt einen Ringpuffer, der als Kill-Ring bezeichnet wird - getöteter Text wird zum Kill-Ring nach oben hinzugefügt und yank kopiert den Text aus dem letzten Kill. YankPop wechselt durch die Gegenstände im Kill Ring. Wenn der Kill Ring voll ist, ersetzen neue Gegenstände die ältesten Gegenstände. Eine Kill-Operation, der unmittelbar eine andere Kill-Operation vorausgeht, hängt die vorherige Kill an, anstatt ein neues Element hinzuzufügen oder ein Element im Kill-Ring zu ersetzen. So können Sie beispielsweise einen Teil einer Zeile mit mehreren KillWord-Operationen abschneiden und sie dann mit einem einzigen Ruck an einer anderen Stelle zurückziehen.
KillLine
- Cmd: ungebunden
- Emacs:
<Ctrl+K>
Löschen Sie die Eingabe vom Cursor bis zum Ende der Zeile. Der gelöschte Text wird in den Kill Ring gelegt.
RückwärtsKillLine
- Cmd: ungebunden
- Emacs:
<Ctrl+U>oder<Ctrl+X,Backspace>
Löschen Sie die Eingabe vom Anfang der Eingabe bis zum Cursor. Der gelöschte Text wird in den Kill Ring gelegt.
KillWord
- Cmd: ungebunden
- Emacs:
<Alt+D>
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 in den Kill Ring gelegt.
RückwärtsKillWord
- Cmd: ungebunden
- Emacs:
<Alt+Backspace>
Löschen Sie die Eingabe vom Anfang des aktuellen Worts zum Cursor. Wenn sich der Cursor zwischen Wörtern befindet, wird die Eingabe vom Anfang des vorherigen Worts bis zum Cursor gelöscht. Der gelöschte Text wird in den Kill Ring gelegt.
ShellKillWord
- Cmd: ungebunden
- Emacs: ungebunden
Wie KillWord, mit der Ausnahme, dass Wortgrenzen durch PowerShell-Tokengrenzen definiert werden.
ShellBackwardKillWord
- Cmd: ungebunden
- Emacs: ungebunden
Wie BackwardKillWord, mit der Ausnahme, dass Wortgrenzen durch PowerShell-Tokengrenzen definiert werden.
UnixWordRubout
- Cmd: ungebunden
- Emacs:
<Ctrl+W>
Wie BackwardKillWord, mit dem Unterschied, dass Wortgrenzen durch Leerzeichen definiert werden.
KillRegion
- Cmd: ungebunden
- Emacs: ungebunden
Beenden Sie den Text zwischen dem Cursor und der Markierung.
Kopieren
- Befehl:
<Ctrl+Shift+C> - Emacs: ungebunden
Kopieren Sie den ausgewählten Bereich in die Systemablage. Wenn kein Bereich ausgewählt ist, kopieren Sie die gesamte Zeile.
CopyOrCancelLine
- Befehl:
<Ctrl+C> - Emacs:
<Ctrl+C>
Kopieren Sie entweder den markierten Text in die Zwischenablage, oder brechen Sie die Bearbeitung der Zeile mit CancelLine ab, wenn kein Text ausgewählt ist.
Schneiden
- Befehl:
<Ctrl+X> - Emacs: ungebunden
Löschen Sie den ausgewählten Bereich, in dem gelöschter Text in der Systemablage platziert wird.
Ami
- Cmd: ungebunden
- Emacs:
<Ctrl+Y>
Fügen Sie der Eingabe den zuletzt beendeten Text hinzu.
YankPop
- Cmd: ungebunden
- Emacs:
<Alt+Y>
Wenn der vorherige Vorgang Yank oder YankPop war, ersetzen Sie den zuvor gezogenen Text durch den nächsten beendeten Text aus dem Kill Ring.
ClearKillRing
- Cmd: ungebunden
- Emacs: ungebunden
Der Inhalt des Tötungsrings wird gelöscht.
Kleister
- Befehl:
<Ctrl+V> - Emacs: ungebunden
Dies ist ähnlich wie Yank, verwendet jedoch die Zwischenablage des Systems anstelle des Kill-Rings.
[!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 der Konsolenanwendung eingefügt werden, Einfügemethode wird jeweils ein Zeichen in den Eingabepuffer kopiert. Der Eingabepuffer wird an den Parser übergeben, wenn ein Neuzeilenzeichen kopiert wird. Daher wird die Eingabe jeweils eine Zeile analysiert. Der Unterschied zwischen Einfügemethoden führt zu unterschiedlichen Ausführungsverhalten.
YankLastArg
- Befehl:
<Alt+.> - Emacs:
<Alt+.>,<Alt+_>
Fügen Sie das letzte Argument aus dem vorherigen Befehl im Verlauf ein. Bei wiederholten Vorgängen wird das zuletzt eingefügte Argument durch das letzte Argument aus dem vorherigen Befehl ersetzt (also Alt+. ALT+. fügt das letzte Argument der vorletzten Verlaufszeile ein).
Mit einem Argument verhält sich YankLastArg zum ersten Mal wie YankNthArg. Ein negatives Argument bei nachfolgenden YankLastArg-Aufrufen ändert die Richtung, während der Verlauf durchlaufen wird. Wenn Sie z. B. Alt+. einmal zu oft können Sie Alt+- Alt+ eingeben. , um die Richtung umzukehren.
Argumente basieren auf PowerShell-Token.
YankNthArg
- Cmd: ungebunden
- Emacs:
<Alt+Ctrl+Y>
Fügen Sie das erste Argument (nicht den Befehlsnamen) des vorherigen Befehls in den Verlauf ein.
Fügen Sie mit einem Argument das n-te Argument ein, wobei 0 in der Regel der Befehl ist. Negative Argumente beginnen am Ende.
Argumente basieren auf PowerShell-Token.
Verschiedenes
Abbrechen
- Cmd: ungebunden
- Emacs:
<Ctrl+G>
Brechen Sie die aktuelle Aktion ab; Beenden Sie z. B. die interaktive Verlaufssuche. Bricht die Eingabe nicht wie CancelLine ab.
Charaktersuche
- Befehl:
<F3> - Emacs:
<Ctrl+]>
Lesen Sie einen Schlüssel, und suchen Sie nach diesem Zeichen. Bei einem Argument wird nach dem n-ten Vorkommen dieses Arguments gesucht. Mit einem negativen Argument wird rückwärts gesucht.
ZeichenSucheRückwärts
- Befehl:
<Shift+F3> - Emacs:
<Alt+Ctrl+]>
Wie CharacterSearch, sucht aber rückwärts. Mit einem negativen Argument wird vorwärts gesucht.
Bildschirm löschen
- Befehl:
<Ctrl+L> - Emacs:
<Ctrl+L>
Löscht den Bildschirm und zeigt die aktuelle Eingabeaufforderung und Eingabe am oberen Bildschirmrand an.
Zahlenargument
- Cmd: ungebunden
- Emacs:
<Alt+[0..9]>,<any char>,<Alt+->
Wird verwendet, um numerische Argumente an Funktionen wie CharacterSearch oder YankNthArg zu übergeben. Alt+- schaltet das Argument auf negativ/nicht negativ um. Um 80 '*'-Zeichen einzugeben, können Sie Alt+8 Alt+0 * eingeben.
CaptureScreen (Erfassen)
- Cmd: ungebunden
- Emacs: ungebunden
Kopiert ausgewählte Zeilen sowohl im Text- als auch im RTF-Format in die Zwischenablage. Verwenden Sie die Pfeiltasten nach oben/unten für die erste Zeile, die ausgewählt werden soll, und dann Umschalt+Pfeil nach oben/Umschalt+Pfeil nach unten, um mehrere Zeilen auszuwählen. Drücken Sie nach der Auswahl die Eingabetaste, um den Text zu kopieren. Escape/Strg+C/Strg+G bricht den Vorgang ab, sodass nichts in die Zwischenablage kopiert wird.
InvokePrompt (Eingabeaufforderung)
- Cmd: ungebunden
- Emacs: ungebunden
Löscht die aktuelle Eingabeaufforderung und ruft die Eingabeaufforderungsfunktion auf, um die Eingabeaufforderung erneut zu anzeigen. Nützlich für benutzerdefinierte Tastenhandler, die den Status ändern, z. B. das Ändern des aktuellen Verzeichnisses.
WhatIsKey
- Befehl:
<Alt+?> - Emacs:
<Alt+?>
Lesen Sie eine Tonart oder einen Akkord und zeigen Sie die Tastenkombination an.
ShowKeyBindings
- Befehl:
<Ctrl+Alt+?> - Emacs:
<Ctrl+Alt+?>
Zeigt alle aktuell gebundenen Schlüssel an.
ScrollDisplayNach oben
- Befehl:
<PageUp> - Emacs:
<PageUp>
Scrollen Sie in der Anzeige um einen Bildschirm nach oben.
ScrollDisplayUpLine
- Befehl:
<Ctrl+PageUp> - Emacs:
<Ctrl+PageUp>
Scrollen Sie in der Anzeige um eine Zeile nach oben.
ScrollDisplayNach unten
- Befehl:
<PageDown> - Emacs:
<PageDown>
Scrollen Sie auf einem Bildschirm nach unten.
ScrollDisplayDownLine
- Befehl:
<Ctrl+PageDown> - Emacs:
<Ctrl+PageDown>
Scrollen Sie in der Anzeige um eine Zeile nach unten.
ScrollDisplayNach oben
- Cmd: ungebunden
- Emacs:
<Ctrl+Home>
Scrollen Sie die Anzeige nach oben.
ScrollDisplayToCursor
- Cmd: ungebunden
- Emacs:
<Ctrl+End>
Scrollen Sie die Anzeige zum Cursor.
Benutzerdefinierte Schlüsselbindungen
PSReadLine unterstützt benutzerdefinierte Tastenzuordnungen mit dem Cmdlet Set-PSReadLineKeyHandler. Die meisten benutzerdefinierten Tastenbelegungen rufen eine der oben genannten Funktionen auf, z. B.
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Sie können ein ScriptBlock an einen Schlüssel binden. Der ScriptBlock kann ziemlich alles tun, was Sie wollen. Einige nützliche Beispiele sind:
- Bearbeiten der Befehlszeile
- Öffnen eines neuen Fensters (z.B. Hilfe)
- Verzeichnisse ändern, ohne die Befehlszeile zu ändern
ScriptBlock empfängt zwei Argumente:
$key– Ein [ConsoleKeyInfo] Objekt, das den Schlüssel darstellt, 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. Meistens wäre dies ein ganzzahliges Argument, das der Benutzer aus den Schlüsselbindungen DigitArgument übergibt. Wenn Ihre Bindung keine Argumente akzeptiert, ist es sinnvoll, dieses Argument zu ignorieren.
Sehen wir uns ein Beispiel an, in dem dem Verlauf eine Befehlszeile hinzugefügt wird, ohne sie auszuführen. Dies ist nützlich, wenn Sie feststellen, dass Sie etwas vergessen haben, aber nicht erneut die Befehlszeile eingeben möchten, die Sie bereits eingegeben haben.
$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
Viele weitere Beispiele finden Sie in der Datei SamplePSReadLineProfile.ps1 , die im PSReadLine-Modulordner installiert ist.
Die meisten Tastenbindungen verwenden einige Hilfsfunktionen zum Bearbeiten der Befehlszeile. Diese APIs werden im nächsten Abschnitt dokumentiert.
Benutzerdefinierte Schlüsselbindungsunterstützungs-APIs
Die folgenden Funktionen sind in Microsoft.PowerShell.PSConsoleReadLine öffentlich, können jedoch 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 sie auszuführen.
void ClearKillRing()
Räume den Tötungsring. Dies wird hauptsächlich für Tests verwendet.
void Delete(int start, int length)
Löschen von Längenzeichen von Anfang an. Dieser Vorgang unterstützt Rückgängig/Wiederholen.
void Ding()
Führen Sie die Ding-Aktion basierend auf den Benutzereinstellungen 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. Der erste wird häufiger für einfache Fälle verwendet. Die zweite wird verwendet, wenn Ihre Bindung mit dem Ast etwas fortgeschrittener macht.
IEnumerable[Microsoft.PowerShell.KeyHandler]
GetKeyHandlers(bool includeBound, bool includeUnbound)
Diese Funktion wird von Get-PSReadLineKeyHandler verwendet und ist in einer benutzerdefinierten Tastenbelegung wahrscheinlich nicht nützlich.
Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()
Diese Funktion wird von Get-PSReadLineOption verwendet und ist wahrscheinlich nicht zu nützlich in einer benutzerdefinierten Schlüsselbindung.
void GetSelectionState([ref] int start, [ref] int length)
Wenn in der Befehlszeile keine Auswahl vorhanden ist, wird -1 sowohl im Start- als auch im Längenformat zurückgegeben. Wenn es eine Auswahl auf der Befehlszeile gibt, werden der Anfang und die Länge der Auswahl zurückgegeben.
void Insert(char c)
void Insert(string s)
Fügen Sie am Cursor ein Zeichen oder eine Zeichenfolge ein. Dieser Vorgang unterstützt Rückgängig/Wiederholen.
string ReadLine(runspace remoteRunspace,
System.Management.Automation.EngineIntrinsics engineIntrinsics)
Dies ist der Haupteinstiegspunkt zu PSReadLine. Sie unterstützt keine Rekursion und ist daher in einer benutzerdefinierten Tastenbelegung nicht nützlich.
void RemoveKeyHandler(string[] key)
Diese Funktion wird von Remove-PSReadLineKeyHandler verwendet und ist wahrscheinlich nicht zu nützlich in einer benutzerdefinierten Schlüsselbindung.
void Replace(int start, int length, string replacement)
Ersetzen Sie einen Teil der Eingabe. Dieser Vorgang unterstützt Rückgängig/Wiederholen. Dies wird gegenüber 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 an den angegebenen Offset. Die Cursorbewegung wird nicht für das Rückgängigmachen verfolgt.
void SetOptions(Microsoft.PowerShell.SetPSReadLineOption options)
Bei dieser Funktion handelt es sich um eine Hilfsmethode, die vom Cmdlet Set-PSReadLineOption verwendet wird, die jedoch für eine benutzerdefinierte Tastenbelegung nützlich sein kann, 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
POWERSHELL-KOMPATIBILITÄT
PSReadLine erfordert PowerShell 3.0 oder höher und den Konsolenhost. In PowerShell ISE funktioniert es nicht. Es funktioniert in der Konsole von Visual Studio Code.
BEFEHLSHISTORIE
PSReadLine verwaltet eine Verlaufsdatei, die alle Befehle und Daten enthält, die Sie über die Befehlszeile eingegeben haben. Diese können sensible Daten enthalten, einschließlich Passwörter. Wenn Sie z. B. das ConvertTo-SecureString Cmdlet verwenden, wird das Kennwort in der Verlaufsdatei als Nur-Text protokolliert. Bei den Verlaufsdateien handelt es sich um eine Datei mit dem Namen $($host.Name)_history.txt. Auf Windows-Systemen wird die Verlaufsdatei bei $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLinegespeichert.
FEEDBACK & BEITRAG ZU PSReadLine
Sie können eine Pull-Anforderung senden oder Feedback auf der GitHub-Seite senden.
SIEHE AUCH
PSReadLine wird stark von der GNU Readline Bibliothek beeinflusst.