PSReadLine
about_PSReadLine
KORTE BESCHRIJVING
PSReadLine biedt een verbeterde bewerkingservaring voor de opdrachtregel in de PowerShell-console.
LANGE BESCHRIJVING
PSReadLine biedt een krachtige bewerkingservaring voor de opdrachtregel voor de PowerShell-console. De oplossing biedt het volgende:
- Syntaxiskleuring van de opdrachtregel
- Een visuele indicatie van syntaxisfouten
- Een betere ervaring met meerdere regels (zowel bewerken als geschiedenis)
- Aanpasbare sleutelbindingen
- Cmd- en Emacs-modi
- Veel configuratieopties
- Voltooiing van Bash-stijl (optioneel in cmd-modus, standaard in emacs-modus)
- Emacs yank/kill ring
- PowerShell-token op basis van woordverplaatsing en -kill
De volgende functies zijn beschikbaar in de klasse [Microsoft.PowerShell.PSConsoleReadLine].
Cursorverplaatsing
EndOfLine
- Cmd:
<End>
- Emacs:
<End>
of<Ctrl+E>
Als de invoer meerdere regels heeft, gaat u naar het einde van de huidige regel of gaat u naar het einde van de invoer, als u al aan het einde van de regel bent. Als de invoer één regel heeft, gaat u naar het einde van de invoer.
BeginningOfLine
- Cmd:
<Home>
- Emacs:
<Home>
of<Ctrl+A>
Als de invoer meerdere regels heeft, gaat u naar het begin van de huidige regel of gaat u naar het begin van de invoer als de invoer al aan het begin van de regel staat. Als de invoer één regel heeft, gaat u naar het begin van de invoer.
Volgende regel
- Cmd: niet-afhankelijk
- Emacs: niet-afhankelijk
Verplaats de cursor naar de volgende regel als de invoer meerdere regels bevat.
Vorige regel
- Cmd: niet-afhankelijk
- Emacs: niet-afhankelijk
Verplaats de cursor naar de vorige regel als de invoer meerdere regels bevat.
ForwardChar
- Cmd:
<RightArrow>
- Emacs:
<RightArrow>
of<Ctrl+F>
Verplaats de cursor één teken naar rechts. Hierdoor wordt de cursor mogelijk verplaatst naar de volgende regel met invoer met meerdere regels.
BackwardChar
- Cmd:
<LeftArrow>
- Emacs:
<LeftArrow>
of<Ctrl+B>
Verplaats de cursor één teken naar links. Hierdoor wordt de cursor mogelijk verplaatst naar de vorige regel met invoer met meerdere regels.
ForwardWord
- Cmd: niet-afhankelijk
- Emacs:
<Alt+F>
Verplaats de cursor naar het einde van het huidige woord of, indien tussen woorden, naar het einde van het volgende woord. U kunt woordenscheidingstekens instellen met:
Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`
VolgendeWord
- Cmd:
<Ctrl+RightArrow>
- Emacs: niet-afhankelijk
De cursor naar het begin van het volgende woord verplaatsen. U kunt woordenscheidingstekens instellen met:
Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`
Achterwaartseword
- Cmd:
<Ctrl+LeftArrow>
- Emacs:
<Alt+B>
Verplaats de cursor terug naar het begin van het huidige woord, of, indien tussen woorden, het begin van het vorige woord. U kunt woordenscheidingstekens instellen met:
Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`
ShellForwardWord
- Cmd: niet-afhankelijk
- Emacs: niet-afhankelijk
Net als ForwardWord worden woordgrenzen gedefinieerd door PowerShell-tokengrenzen.
ShellNextWord
- Cmd: niet-afhankelijk
- Emacs: niet-afhankelijk
Net als NextWord worden woordgrenzen gedefinieerd door PowerShell-tokengrenzen.
ShellBackwardWord
- Cmd: niet-afhankelijk
- Emacs: niet-afhankelijk
Net als AchterWaartsWord worden woordgrenzen gedefinieerd door PowerShell-tokengrenzen.
GotoBrace
- Cmd:
<Ctrl+}>
- Emacs: niet-afhankelijk
Ga naar het overeenkomende haakje, accolade of vierkante haak.
AddLine
- Cmd:
<Shift-Enter>
- Emacs:
<Shift-Enter>
De vervolgprompt wordt weergegeven op de volgende regel en PSReadLine wacht tot de toetsen de huidige invoer hebben bewerkt. Dit is handig om invoer met meerdere regels als één opdracht in te voeren, zelfs wanneer één regel de invoer zelf voltooit.
Basisbewerkingen
CancelLine
- Cmd: niet-afhankelijk
- Emacs: niet-afhankelijk
Annuleer alle bewerkingen voor de regel, laat de invoerregel op het scherm staan, maar keer terug van PSReadLine zonder de invoer uit te voeren.
RevertLine
- Cmd:
<ESC>
- Emacs:
<Alt+R>
Hiermee wordt alle invoer teruggedraaid sinds de laatste invoer is geaccepteerd en uitgevoerd. Dit komt overeen met het gebruik van de opdracht Ongedaan maken totdat er niets meer is om ongedaan te maken.
BackwardDeleteChar
- Cmd:
<Backspace>
- Emacs:
<Backspace>
of<Ctrl+H>
Verwijder het teken vóór de cursor.
DeleteChar
- Cmd:
<Delete>
- Emacs:
<Delete>
Verwijder het teken onder de cursor.
DeleteCharOrExit
- Cmd: niet afhankelijk
- Emacs:
<Ctrl+D>
Net als DeleteChar, tenzij de regel leeg is, in dat geval het proces afsluiten.
AcceptLine
- Cmd:
<Enter>
- Emacs:
<Enter>
of<Ctrl+M>
Probeer de huidige invoer uit te voeren. Als de huidige invoer onvolledig is (er ontbreekt bijvoorbeeld een haakje sluiten, haakje of aanhalingsteken), wordt de vervolgprompt weergegeven op de volgende regel en wacht PSReadLine op toetsen om de huidige invoer te bewerken.
AcceptAndGetNext
- Cmd: niet afhankelijk
- Emacs:
<Ctrl+O>
Net als AcceptLine, maar nadat de regel is voltooid, begint u met het bewerken van de volgende regel uit de geschiedenis.
ValidateAndAcceptLine
- Cmd: niet afhankelijk
- Emacs: niet-afhankelijk
Like AcceptLine, maar voert extra validatie uit, waaronder:
- Controleert op aanvullende parseerfouten
- Valideert of de opdrachtnamen allemaal zijn gevonden
- Als u PowerShell 4.0 of hoger gebruikt, worden de parameters en argumenten gevalideerd
Als er fouten zijn, wordt het foutbericht weergegeven en niet geaccepteerd of toegevoegd aan de geschiedenis, tenzij u de opdrachtregel corrigeert of AcceptLine of ValidateAndAcceptLine opnieuw uitvoert terwijl het foutbericht wordt weergegeven.
BackwardDeleteLine
- Cmd:
<Ctrl+Home>
- Emacs: niet-afhankelijk
Verwijder de tekst vanaf het begin van de invoer naar de cursor.
ForwardDeleteLine
- Cmd:
<Ctrl+End>
- Emacs: niet-afhankelijk
Verwijder de tekst van de cursor tot het einde van de invoer.
Selecteer BackwardChar
- Cmd:
<Shift+LeftArrow>
- Emacs:
<Shift+LeftArrow>
Pas de huidige selectie aan zodat het vorige teken wordt opgenomen.
SelectForwardChar
- Cmd:
<Shift+RightArrow>
- Emacs:
<Shift+RightArrow>
Pas de huidige selectie aan om het volgende teken op te nemen.
SelectBackwardWord
- Cmd:
<Shift+Ctrl+LeftArrow>
- Emacs:
<Alt+Shift+B>
Pas de huidige selectie aan zodat het vorige woord wordt opgenomen.
SelectForwardWord
- Cmd: niet afhankelijk
- Emacs:
<Alt+Shift+F>
Pas de huidige selectie aan om het volgende woord op te nemen met Behulp van ForwardWord.
SelecteerVolgendeWord
- Cmd:
<Shift+Ctrl+RightArrow>
- Emacs: niet-afhankelijk
Pas de huidige selectie aan om het volgende woord op te nemen met Behulp van NextWord.
SelectShellForwardWord
- Cmd: niet afhankelijk
- Emacs: niet-afhankelijk
Pas de huidige selectie aan om het volgende woord op te nemen met Behulp van ShellForwardWord.
SelectShellNextWord
- Cmd: niet afhankelijk
- Emacs: niet-afhankelijk
Pas de huidige selectie aan om het volgende woord op te nemen met ShellNextWord.
SelectShellBackwardWord
- Cmd: niet afhankelijk
- Emacs: niet-afhankelijk
Pas de huidige selectie aan om het vorige woord op te nemen met Behulp van ShellBackwardWord.
Selecteer BackwardsLine
- Cmd:
<Shift+Home>
- Emacs:
<Shift+Home>
Pas de huidige selectie aan om op te nemen vanaf de cursor tot het begin van de regel.
SelectLine
- Cmd:
<Shift+End>
- Emacs:
<Shift+End>
Pas de huidige selectie aan om op te nemen vanaf de cursor tot het einde van de regel.
Alles selecteren
- Cmd:
<Ctrl+A>
- Emacs: niet-afhankelijk
Selecteer de hele regel. Hiermee verplaatst u de cursor naar het einde van de regel.
SelfInsert
- Cmd:
<a>
,<b>
, ... - Emacs:
<a>
,<b>
, ...
Voeg de ingevoerde sleutel in.
Opnieuw uitvoeren
- Cmd:
<Ctrl+Y>
- Emacs: niet-afhankelijk
Een invoeging of verwijdering opnieuw uitvoeren die ongedaan is gemaakt door Ongedaan maken.
Ongedaan maken
- Cmd:
<Ctrl+Z>
- Emacs:
<Ctrl+_>
Een eerdere invoeging of verwijdering ongedaan maken.
Geschiedenis
ClearHistory
- Cmd:
<Alt+F7>
- Emacs: niet-afhankelijk
De geschiedenis in PSReadLine wordt gewist. Dit heeft geen invloed op de Geschiedenis van PowerShell.
PreviousHistory
- Cmd:
<UpArrow>
- Emacs:
<UpArrow>
of<Ctrl+P>
Vervang de huidige invoer door het vorige item uit de PSReadLine-geschiedenis.
VolgendeGeschiedenis
- Cmd:
<DownArrow>
- Emacs:
<DownArrow>
of<Ctrl+N>
Vervang de huidige invoer door het volgende item uit de PSReadLine-geschiedenis.
ForwardSearchHistory
- Cmd:
<Ctrl+S>
- Emacs:
<Ctrl+S>
Search interactief vooruit vanaf de huidige geschiedenisregel.
ReverseSearchHistory
- Cmd:
<Ctrl+R>
- Emacs:
<Ctrl+R>
Search interactief terug van de huidige geschiedenisregel.
HistorySearchBackward
- Cmd:
<F8>
- Emacs: niet-afhankelijk
Vervang de huidige invoer door het vorige item uit de PSReadLine-geschiedenis dat overeenkomt met de tekens tussen het begin en de invoer en de cursor.
HistorySearchForward
- Cmd:
<Shift+F8>
- Emacs: niet-afhankelijk
Vervang de huidige invoer door het volgende item uit de PSReadLine-geschiedenis dat overeenkomt met de tekens tussen het begin en de invoer en de cursor.
BeginOfHistory
- Cmd: niet afhankelijk
- Emacs:
<Alt+<>
Vervang de huidige invoer door het laatste item uit de PSReadLine-geschiedenis.
EndOfHistory
- Cmd: niet afhankelijk
- Emacs:
<Alt+>>
Vervang de huidige invoer door het laatste item in de GESCHIEDENIS van PSReadLine. Dit is de mogelijk lege invoer die is ingevoerd vóór eventuele geschiedenisopdrachten.
Tabvoltooiing
TabCompleteVolgende
- Cmd:
<Tab>
- Emacs: niet-afhankelijk
Probeer de tekst rond de cursor te voltooien met de volgende beschikbare voltooiing.
TabCompletePrevious
- Cmd:
<Shift-Tab>
- Emacs: niet-afhankelijk
Probeer de tekst rond de cursor te voltooien met de volgende eerdere voltooiing.
Voltooid
- Cmd: niet afhankelijk
- Emacs:
<Tab>
Poging om de tekst rond de cursor te voltooien. Als er meerdere mogelijke voltooiingen zijn, wordt het langste ondubbelzinnige voorvoegsel gebruikt voor voltooiing. Als u de langste ondubbelzinnige voltooiing probeert te voltooien, wordt een lijst met mogelijke voltooiingen weergegeven.
MenuComplete
- Cmd:
<Ctrl+Space>
- Emacs:
<Ctrl+Space>
Poging om de tekst rond de cursor te voltooien. Als er meerdere mogelijke voltooiingen zijn, wordt een lijst met mogelijke voltooiingen weergegeven en kunt u de juiste voltooiing selecteren met behulp van de pijltoetsen of Tab/Shift+Tab. Met Escape en Ctrl+G wordt de menuselectie geannuleerd en wordt de lijn teruggezet naar de status voordat u MenuComplete aanroept.
Mogelijkecompletions
- Cmd: niet afhankelijk
- Emacs:
<Alt+Equals>
De lijst met mogelijke voltooiingen weergeven.
SetMark
- Cmd: niet afhankelijk
- Emacs:
<Alt+Space>
Markeer de huidige locatie van de cursor voor gebruik in een volgende bewerkingsopdracht.
ExchangePointAndMark
- Cmd: niet afhankelijk
- Emacs:
<Ctrl+X,Ctrl+X>
De cursor wordt op de locatie van de markering geplaatst en de markering wordt verplaatst naar de locatie van de cursor.
Kill/Yank
Kill en Yank werken op een klembord in de PSReadLine-module. Er is een ringbuffer genaamd de kill ring. Er wordt tekst toegevoegd aan de kill ring up en yank kopieert tekst van de meest recente kill. YankPop doorloopt items in de kill ring. Wanneer de kill ring vol is, vervangen nieuwe items de oudste items. Een kill-bewerking die onmiddellijk wordt voorafgegaan door een andere kill-bewerking voegt de vorige kill toe in plaats van een nieuw item toe te voegen of een item te vervangen in de kill ring. Dit is hoe u een deel van een lijn kunt knippen, bijvoorbeeld met meerdere KillWord-bewerkingen, en ze vervolgens ergens anders als één yank terughalen.
KillLine
- Cmd: niet afhankelijk
- Emacs:
<Ctrl+K>
Wis de invoer van de cursor tot het einde van de regel. De gewiste tekst wordt in de kill ring geplaatst.
Achterwaartse Kill-lijn
- Cmd: niet afhankelijk
- Emacs:
<Ctrl+U>
of<Ctrl+X,Backspace>
Wis de invoer vanaf het begin van de invoer voor de cursor. De gewiste tekst wordt in de kill ring geplaatst.
KillWord
- Cmd: niet afhankelijk
- Emacs:
<Alt+D>
Wis de invoer van de cursor tot het einde van het huidige woord. Als de cursor tussen woorden staat, wordt de invoer gewist van de cursor tot het einde van het volgende woord. De gewiste tekst wordt in de kill ring geplaatst.
BackwardKillWord
- Cmd: niet afhankelijk
- Emacs:
<Alt+Backspace>
Wis de invoer vanaf het begin van het huidige woord voor de cursor. Als de cursor zich tussen woorden bevindt, wordt de invoer gewist vanaf het begin van het vorige woord naar de cursor. De gewiste tekst wordt in de kill ring geplaatst.
ShellKillWord
- Cmd: niet afhankelijk
- Emacs: niet-afhankelijk
Net als KillWord worden woordgrenzen gedefinieerd door PowerShell-tokengrenzen.
ShellBackwardKillWord
- Cmd: niet afhankelijk
- Emacs: niet-afhankelijk
Net als AchterKillWord worden woordgrenzen gedefinieerd door PowerShell-tokengrenzen.
UnixWordRubout
- Cmd: niet afhankelijk
- Emacs:
<Ctrl+W>
Net als AchterKillWord worden woordgrenzen gedefinieerd door witruimte.
KillRegion
- Cmd: niet-afhankelijk
- Emacs: niet-afhankelijk
Sluit de tekst tussen de cursor en de markering af.
Kopiëren
- Cmd:
<Ctrl+Shift+C>
- Emacs: niet-afhankelijk
Kopieer het geselecteerde gebied naar het klembord van het systeem. Als er geen regio is geselecteerd, kopieert u de hele regel.
CopyOrCancelLine
- Cmd:
<Ctrl+C>
- Emacs:
<Ctrl+C>
Kopieer de geselecteerde tekst naar het Klembord of annuleer het bewerken van de regel met CancelLine als er geen tekst is geselecteerd.
Knippen
- Cmd:
<Ctrl+X>
- Emacs: niet-afhankelijk
Verwijder het geselecteerde gebied en plaats verwijderde tekst op het klembord van het systeem.
Yank
- Cmd: niet-afhankelijk
- Emacs:
<Ctrl+Y>
Voeg de laatst afgebroken tekst toe aan de invoer.
YankPop
- Cmd: niet-afhankelijk
- Emacs:
<Alt+Y>
Als de vorige bewerking Yank of YankPop was, vervangt u de eerder gemaakte tekst door de volgende afgebroken tekst uit de kill ring.
ClearKillRing
- Cmd: niet-afhankelijk
- Emacs: niet-afhankelijk
De inhoud van de kill ring is gewist.
Plakken
- Cmd:
<Ctrl+V>
- Emacs: niet-afhankelijk
Dit is vergelijkbaar met Yank, maar gebruikt het klembord van het systeem in plaats van de kill ring.
[! BELANGRIJK]
Wanneer u de functie Plakken gebruikt, wordt de volledige inhoud van de klembordbuffer in de invoerbuffer van PSReadLine geplakt. De invoerbuffer wordt vervolgens doorgegeven aan de PowerShell-parser. Invoer die wordt geplakt met behulp van de plakmethode met de rechtermuisknop van de consoletoepassing, wordt teken voor teken naar de invoerbuffer gekopieerd. De invoerbuffer wordt doorgegeven aan de parser wanneer een nieuw regelteken wordt gekopieerd. Daarom wordt de invoer regel voor regel geparseerd. Het verschil tussen plakmethoden resulteert in een ander uitvoeringsgedrag.
YankLastArg
- Cmd:
<Alt+.>
- Emacs:
<Alt+.>
,<Alt+_>
Voeg het laatste argument uit de vorige opdracht in de geschiedenis in. Herhaalde bewerkingen vervangen het laatste ingevoegde argument door het laatste argument uit de vorige opdracht (dus Alt+. Alt+. voegt het laatste argument van de op een na laatste geschiedenisregel in.
Met een argument gedraagt YankLastArg zich voor het eerst als YankNthArg. Een negatief argument voor volgende YankLastArg-aanroepen verandert de richting tijdens het doorlopen van de geschiedenis. Als u bijvoorbeeld op Alt+ drukt. Te vaak kunt u Alt+- Alt+ typen. om de richting om te keren.
Argumenten zijn gebaseerd op PowerShell-tokens.
YankNthArg
- Cmd: niet-afhankelijk
- Emacs:
<Alt+Ctrl+Y>
Voeg het eerste argument (niet de opdrachtnaam) van de vorige opdracht in de geschiedenis in.
Voeg met een argument het nde argument in, waarbij 0 doorgaans de opdracht is. Negatieve argumenten beginnen vanaf het einde.
Argumenten zijn gebaseerd op PowerShell-tokens.
Diversen
Afbreken
- Cmd: niet-afhankelijk
- Emacs:
<Ctrl+G>
De huidige actie afbreken; Stop bijvoorbeeld interactief zoeken in geschiedenis. Annuleert geen invoer zoals CancelLine.
CharacterSearch
- Cmd:
<F3>
- Emacs:
<Ctrl+]>
Lees een sleutel en zoek naar dat teken. Met een argument wordt gezocht naar de eerste keer dat dat argument voorkomt. Met een negatief argument wordt naar achteren gezocht.
CharacterSearchBackward
- Cmd:
<Shift+F3>
- Emacs:
<Alt+Ctrl+]>
Zoals CharacterSearch, maar zoekt naar achteren. Met een negatief argument wordt er naar voren gezocht.
ClearScreen
- Cmd:
<Ctrl+L>
- Emacs:
<Ctrl+L>
Hiermee wist u het scherm en wordt de huidige prompt en invoer boven aan het scherm weergegeven.
DigitArgument
- Cmd: niet-afhankelijk
- Emacs:
<Alt+[0..9]>
,<any char>
,<Alt+->
Wordt gebruikt om numerieke argumenten door te geven aan functies zoals CharacterSearch of YankNthArg. Met Alt+- schakelt u het argument in op negatief/niet-negatief. Als u 80 *-tekens wilt invoeren, kunt u Alt+8 Alt+0 * typen.
CaptureScreen
- Cmd: niet-afhankelijk
- Emacs: niet-afhankelijk
Hiermee kopieert u geselecteerde regels naar het klembord in zowel tekst- als RTF-indeling. Gebruik pijl-omhoog/pijl-omlaag om de eerste regel te selecteren en vervolgens Shift+UpArrow/Shift+DownArrow om meerdere regels te selecteren. Druk na het selecteren op Enter om de tekst te kopiëren. Escape/Ctrl+C/Ctrl+G annuleert de bewerking, zodat er niets naar het klembord wordt gekopieerd.
InvokePrompt
- Cmd: niet-afhankelijk
- Emacs: niet-afhankelijk
Hiermee wordt de huidige prompt gewist en wordt de promptfunctie aangeroepen om de prompt opnieuw weer te geven. Handig voor aangepaste sleutelhandlers die de status wijzigen, zoals het wijzigen van de huidige map.
WhatIsKey
- Cmd:
<Alt+?>
- Emacs:
<Alt+?>
Lees een toets of akkoord en geef de toetsbinding weer.
ShowKeyBindings
- Cmd:
<Ctrl+Alt+?>
- Emacs:
<Ctrl+Alt+?>
Alle momenteel afhankelijke sleutels weergeven.
ScrollDisplayUp
- Cmd:
<PageUp>
- Emacs:
<PageUp>
Schuif de weergave één scherm omhoog.
ScrollDisplayUpLine
- Cmd:
<Ctrl+PageUp>
- Emacs:
<Ctrl+PageUp>
Schuif de weergave één regel omhoog.
ScrollDisplayDown
- Cmd:
<PageDown>
- Emacs:
<PageDown>
Schuif de weergave één scherm omlaag.
ScrollDisplayDownLine
- Cmd:
<Ctrl+PageDown>
- Emacs:
<Ctrl+PageDown>
Schuif de weergave één regel omlaag.
ScrollDisplayTop
- Cmd: niet-afhankelijk
- Emacs:
<Ctrl+Home>
Schuif de weergave naar boven.
ScrollDisplayToCursor
- Cmd: niet-afhankelijk
- Emacs:
<Ctrl+End>
Schuif de weergave naar de cursor.
Aangepaste sleutelbindingen
PSReadLine ondersteunt aangepaste sleutelbindingen met behulp van de cmdlet Set-PSReadLineKeyHandler
. De meeste aangepaste sleutelbindingen roepen een van de bovenstaande functies aan, bijvoorbeeld
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
U kunt een ScriptBlock binden aan een sleutel. ScriptBlock kan vrijwel alles doen wat u wilt. Enkele nuttige voorbeelden zijn
- de opdrachtregel bewerken
- een nieuw venster openen (bijvoorbeeld help)
- directory's wijzigen zonder de opdrachtregel te wijzigen
Het ScriptBlock ontvangt twee argumenten:
$key
- Een [ConsoleKeyInfo] -object dat de sleutel is die de aangepaste binding heeft geactiveerd. Als u dezelfde ScriptBlock aan meerdere sleutels koppelt en verschillende acties moet uitvoeren, afhankelijk van de sleutel, kunt u $key controleren. Veel aangepaste bindingen negeren dit argument.$arg
- Een willekeurig argument. Meestal is dit een geheel getal dat de gebruiker doorgeeft vanuit de sleutelbindingen DigitArgument. Als uw binding geen argumenten accepteert, is het redelijk om dit argument te negeren.
Laten we eens kijken naar een voorbeeld waarmee een opdrachtregel aan de geschiedenis wordt toegevoegd zonder deze uit te voeren. Dit is handig als u beseft dat u iets vergeten bent, maar de opdrachtregel die u al hebt ingevoerd, niet opnieuw wilt invoeren.
$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
U kunt nog veel meer voorbeelden zien in het bestand SamplePSReadLineProfile.ps1
dat is geïnstalleerd in de modulemap PSReadLine.
De meeste sleutelbindingen gebruiken enkele helperfuncties voor het bewerken van de opdrachtregel. Deze API's worden beschreven in de volgende sectie.
Ondersteunings-API's voor aangepaste sleutelbindingen
De volgende functies zijn openbaar in Microsoft.PowerShell.PSConsoleReadLine, maar kunnen niet rechtstreeks worden gebonden aan een sleutel. De meeste zijn handig in aangepaste sleutelbindingen.
void AddToHistory(string command)
Voeg een opdrachtregel toe aan de geschiedenis zonder deze uit te voeren.
void ClearKillRing()
Maak de kill ring leeg. Dit wordt meestal gebruikt voor het testen.
void Delete(int start, int length)
Lengtetekens verwijderen vanaf het begin. Deze bewerking ondersteunt ongedaan maken/opnieuw uitvoeren.
void Ding()
Voer de actie Ding uit op basis van de voorkeur van de gebruiker.
void GetBufferState([ref] string input, [ref] int cursor)
void GetBufferState([ref] Ast ast, [ref] Token[] tokens,
[ref] ParseError[] parseErrors, [ref] int cursor)
Deze twee functies halen nuttige informatie op over de huidige status van de invoerbuffer. De eerste wordt vaker gebruikt voor eenvoudige gevallen. De tweede wordt gebruikt als uw binding iets geavanceerder doet met de Ast.
IEnumerable[Microsoft.PowerShell.KeyHandler]
GetKeyHandlers(bool includeBound, bool includeUnbound)
Deze functie wordt gebruikt door Get-PSReadLineKeyHandler en is waarschijnlijk niet nuttig in een aangepaste sleutelbinding.
Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()
Deze functie wordt gebruikt door Get-PSReadLineOption en is waarschijnlijk niet al te nuttig in een aangepaste sleutelbinding.
void GetSelectionState([ref] int start, [ref] int length)
Als er geen selectie op de opdrachtregel is, wordt -1 geretourneerd in zowel start als lengte. Als er een selectie op de opdrachtregel is, worden het begin en de lengte van de selectie geretourneerd.
void Insert(char c)
void Insert(string s)
Voeg een teken of tekenreeks toe aan de cursor. Deze bewerking ondersteunt ongedaan maken/opnieuw uitvoeren.
string ReadLine(runspace remoteRunspace,
System.Management.Automation.EngineIntrinsics engineIntrinsics)
Dit is het belangrijkste toegangspunt voor PSReadLine. Het biedt geen ondersteuning voor recursie, dus het is niet nuttig in een aangepaste sleutelbinding.
void RemoveKeyHandler(string[] key)
Deze functie wordt gebruikt door Remove-PSReadLineKeyHandler en is waarschijnlijk niet al te nuttig in een aangepaste sleutelbinding.
void Replace(int start, int length, string replacement)
Vervang een deel van de invoer. Deze bewerking ondersteunt ongedaan maken/opnieuw uitvoeren. Dit heeft de voorkeur boven Verwijderen gevolgd door Invoegen, omdat dit wordt behandeld als één actie voor ongedaan maken.
void SetCursorPosition(int cursor)
Verplaats de cursor naar de opgegeven offset. Cursorverplaatsing wordt niet bijgehouden voor ongedaan maken.
void SetOptions(Microsoft.PowerShell.SetPSReadLineOption options)
Deze functie is een helpermethode die wordt gebruikt door de cmdlet Set-PSReadLineOption, maar kan nuttig zijn voor een aangepaste sleutelbinding die een instelling tijdelijk wil wijzigen.
bool TryGetArgAsInt(System.Object arg, [ref] int numericArg,
int defaultNumericArg)
Deze helpermethode wordt gebruikt voor aangepaste bindingen die digitargument respecteren. Een typisch gesprek ziet eruit als
[int]$numericArg = 0
[Microsoft.PowerShell.PSConsoleReadLine]::TryGetArgAsInt($arg,
[ref]$numericArg, 1)
OPMERKING
POWERSHELL-COMPATIBILITEIT
VOOR PSReadLine is PowerShell 3.0 of hoger en de consolehost vereist. Het werkt niet in PowerShell ISE. Het werkt wel in de console van Visual Studio Code.
OPDRACHTGESCHIEDENIS
PSReadLine onderhoudt een geschiedenisbestand met alle opdrachten en gegevens die u hebt ingevoerd vanaf de opdrachtregel. Dit kan gevoelige gegevens bevatten, waaronder wachtwoorden. Als u bijvoorbeeld de ConvertTo-SecureString
cmdlet gebruikt, wordt het wachtwoord in het geschiedenisbestand vastgelegd als tekst zonder opmaak. De geschiedenisbestanden zijn een bestand met de naam $($host.Name)_history.txt
. Op Windows-systemen wordt het geschiedenisbestand opgeslagen op $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine
.
FEEDBACK & BIJDRAGEN AAN PSReadLine
U kunt gerust een pull-aanvraag indienen of feedback verzenden op de GitHub-pagina.
ZIE OOK
PSReadLine wordt sterk beïnvloed door de GNU-leeslijnbibliotheek .