Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Breve descrizione
PSReadLine offre un'esperienza di modifica della riga di comando migliorata nella console di PowerShell.
Descrizione lunga
PSReadLine 2.0 offre una potente esperienza di modifica della riga di comando per la console di PowerShell. Fornisce:
- Colorazione della sintassi della riga di comando
- Indicazione visiva degli errori di sintassi
- Un'esperienza multilinea migliore (modifica e cronologia)
- Tasti di scelta rapida personalizzabili
- Modalità Cmd ed Emacs
- Molte opzioni di configurazione
- Completamento dello stile Bash (facoltativo in modalità Cmd, impostazione predefinita in modalità Emacs)
- Emacs yank/kill-ring
- Spostamento ed eliminazione basata su token di PowerShell
PSReadLine richiede PowerShell 3.0 o versione successiva. PSReadLine funziona con l'host della console predefinito, Visual Studio Code e Terminale finestra. Non funziona in PowerShell ISE.
PSReadLine 2.1.0 viene fornito con PowerShell 7.2 ed è supportato in tutte le versioni supportate di PowerShell. È disponibile per l'installazione da PowerShell Gallery. Per installare PSReadLine 2.1.0 in una versione supportata di PowerShell, eseguire il comando seguente.
Install-Module -Name PSReadLine -RequiredVersion 2.1.0
Nota
A partire da PowerShell 7.0, PowerShell ignora il caricamento automatico di PSReadLine in Windows se viene rilevato un programma per la lettura dello schermo. Attualmente PSReadLine non funziona bene con le utilità per la lettura dello schermo. Il rendering e la formattazione predefiniti di PowerShell 7.0 in Windows funzionano correttamente. Se necessario, è possibile caricare manualmente il modulo.
Le funzioni seguenti sono disponibili nella classe Microsoft.PowerShell.PSConsoleReadLine.
Funzioni di modifica di base
Abortire
Interrompere l'azione corrente, ad esempio: ricerca cronologia incrementale.
- Emacs:
<Ctrl+g>
AcceptAndGetNext
Tentare di eseguire l'input corrente. Se può essere eseguito (ad esempio AcceptLine), richiamare l'elemento successivo dalla cronologia alla successiva chiamata a ReadLine.
- Emacs:
<Ctrl+o>
AcceptLine
Tentare di eseguire l'input corrente. Se l'input corrente è incompleto (ad esempio c'è una parentesi chiusa mancante, parentesi quadre o virgolette), la richiesta di continuazione viene visualizzata nella riga successiva e PSReadLine attende che le chiavi modifichino l'input corrente.
- Cmd:
<Enter> - Emacs:
<Enter> - Modalità di inserimento vi:
<Enter>
AddLine
Il prompt di continuazione viene visualizzato nella riga successiva e PSReadLine attende che le chiavi modifichino l'input corrente. Ciò è utile per immettere l'input su più righe come singolo comando anche quando una singola riga è completa di input da sola.
- Cmd:
<Shift+Enter> - Emacs:
<Shift+Enter> - Modalità di inserimento vi:
<Shift+Enter> - Modalità di comando Vi:
<Shift+Enter>
BackwardDeleteChar
Eliminare il carattere prima del cursore.
- Cmd:
<Backspace>,<Ctrl+h> - Emacs:
<Backspace>,<Ctrl+Backspace>,<Ctrl+h> - Modalità di inserimento vi:
<Backspace> - Modalità di comando Vi:
<X>,<d,h>
BackwardDeleteLine
Come BackwardKillLine: elimina il testo dal punto all'inizio della riga, ma non inserisce il testo eliminato nell'anello di terminazioni.
- Cmd:
<Ctrl+Home> - Modalità di inserimento vi:
<Ctrl+u>,<Ctrl+Home> - Modalità di comando Vi:
<Ctrl+u>,<Ctrl+Home>,<d,0>
BackwardDeleteWord
Elimina la parola precedente.
- Modalità di comando Vi:
<Ctrl+w>,<d,b>
BackwardKillLine
Cancellare l'input dall'inizio dell'input al cursore. Il testo cancellato viene inserito nel kill-ring.
- Emacs:
<Ctrl+u>,<Ctrl+x,Backspace>
BackwardKillWord
Cancellare l'input dall'inizio della parola corrente al cursore. Se il cursore è compreso tra le parole, l'input viene cancellato dall'inizio della parola precedente al cursore. Il testo cancellato viene inserito nel kill-ring.
- Cmd:
<Ctrl+Backspace>,<Ctrl+w> - Emacs:
<Alt+Backspace>,<Escape,Backspace> - Modalità di inserimento vi:
<Ctrl+Backspace> - Modalità di comando Vi:
<Ctrl+Backspace>
CancelLine
Annullare l'input corrente, lasciando l'input sullo schermo, ma torna all'host in modo che la richiesta venga valutata di nuovo.
- Modalità di inserimento vi:
<Ctrl+c> - Modalità di comando Vi:
<Ctrl+c>
Copiare
Copiare l'area selezionata negli Appunti di sistema. Se non è selezionata alcuna area, copiare l'intera riga.
- Cmd:
<Ctrl+C>
CopyOrCancelLine
Se il testo è selezionato, copiare negli Appunti; in caso contrario, annullare la riga.
- Cmd:
<Ctrl+c> - Emacs:
<Ctrl+c>
Tagliare
Elimina l'area selezionata inserendo testo eliminato negli Appunti di sistema.
- Cmd:
<Ctrl+x>
DeleteChar
Eliminare il carattere sotto il cursore.
- Cmd:
<Delete> - Emacs:
<Delete> - Modalità di inserimento vi:
<Delete> - Modalità di comando vi:
<Delete>,<x>,<d,l>,<d,Spacebar>
DeleteCharOrExit
Eliminare il carattere sotto il cursore oppure se la riga è vuota, uscire dal processo.
- Emacs:
<Ctrl+d>
DeleteEndOfBuffer
Elimina fino alla fine del buffer su più righe.
- Modalità di comando Vi:
<d,G>
DeleteEndOfWord
Elimina alla fine della parola.
- Modalità di comando Vi:
<d,e>
DeleteLine
Elimina la riga logica corrente di un buffer su più righe, abilitando l'annullamento.
- Modalità di comando Vi:
<d,d>,<d,_>
DeletePreviousLines
Elimina le righe logiche richieste precedenti e la riga logica corrente in un buffer su più righe.
- Modalità di comando Vi:
<d,k>
DeleteRelativeLines
Elimina dall'inizio del buffer alla riga logica corrente in un buffer su più righe.
Come la maggior parte dei comandi Vi, il comando <d,g,g> può essere preceduto da un argomento numerico che specifica un numero di riga assoluto, che, insieme al numero di riga corrente, costituisce un intervallo di righe da eliminare.
Se non specificato, per impostazione predefinita l'argomento numerico è 1, che fa riferimento alla prima riga logica in un buffer su più righe.
Il numero effettivo di righe da eliminare dalla multilinea viene calcolato come differenza tra il numero di riga logico corrente e l'argomento numerico specificato, che può quindi essere negativo. Di conseguenza, il relativo parte del nome del metodo.
- Modalità di comando Vi:
<d,g,g>
DeleteNextLines
Elimina la riga logica corrente e le righe logiche richieste successive in un buffer su più righe.
- Modalità di comando Vi:
<d,j>
DeleteLineToFirstChar
Elimina il testo dal cursore al primo carattere non vuoto della riga.
- Modalità di comando Vi:
<d,^>
DeleteToEnd
Elimina alla fine della riga.
- Modalità di comando Vi:
<D>,<d,$>
DeleteWord
Eliminare la parola successiva.
- Modalità di comando Vi:
<d,w>
ForwardDeleteLine
Come ForwardKillLine: elimina il testo dal punto alla fine della riga, ma non inserisce il testo eliminato nell'anello di terminazioni.
- Cmd:
<Ctrl+End> - Modalità di inserimento vi:
<Ctrl+End> - Modalità di comando Vi:
<Ctrl+End>
InsertLineAbove
Viene creata una nuova riga vuota sopra la riga corrente, indipendentemente dalla posizione in cui si trova il cursore sulla riga corrente. Il cursore si sposta all'inizio della nuova riga.
- Cmd:
<Ctrl+Enter>
InsertLineBelow
Sotto la riga corrente viene creata una nuova riga vuota indipendentemente dalla posizione in cui si trova il cursore nella riga corrente. Il cursore si sposta all'inizio della nuova riga.
- Cmd:
<Shift+Ctrl+Enter>
InvertCase
Inverti la maiuscola del carattere corrente e passa alla successiva.
- Modalità di comando Vi:
<~>
KillLine
Cancellare l'input dal cursore alla fine dell'input. Il testo cancellato viene inserito nel kill-ring.
- Emacs:
<Ctrl+k>
KillRegion
Terminare il testo tra il cursore e il segno.
- La funzione non è associato.
KillWord
Cancellare l'input dal cursore alla fine della parola corrente. Se il cursore è compreso tra le parole, l'input viene cancellato dal cursore alla fine della parola successiva. Il testo cancellato viene inserito nel kill-ring.
- Cmd:
<Alt+d>,<Ctrl+Delete> - Emacs:
<Alt+d>,<Escape,d> - Modalità di inserimento vi:
<Ctrl+Delete> - Modalità di comando Vi:
<Ctrl+Delete>
Incollare
Incollare testo dagli Appunti di sistema.
- Cmd:
<Ctrl+v>,<Shift+Insert> - Modalità di inserimento vi:
<Ctrl+v> - Modalità di comando Vi:
<Ctrl+v>
Importante
Quando si usa la funzione incolla
PasteAfter
Incollare gli Appunti dopo il cursore, spostando il cursore alla fine del testo incollato.
- Modalità di comando Vi:
<p>
PasteBefore
Incollare gli Appunti prima del cursore, spostando il cursore alla fine del testo incollato.
- Modalità di comando Vi:
<P>
PrependAndAccept
Anteporre un '#' e accettare la riga.
- Modalità di comando Vi:
<#>
Rifare
Annullare un'annullamento.
- Cmd:
<Ctrl+y> - Modalità di inserimento vi:
<Ctrl+y> - Modalità di comando Vi:
<Ctrl+y>
RepeatLastCommand
Ripetere l'ultima modifica del testo.
- Modalità di comando Vi:
<.>
RevertLine
Ripristina tutto l'input all'input corrente.
- Cmd:
<Escape> - Emacs:
<Alt+r>,<Escape,r>
ShellBackwardKillWord
Cancellare l'input dall'inizio della parola corrente al cursore. Se il cursore è compreso tra le parole, l'input viene cancellato dall'inizio della parola precedente al cursore. Il testo cancellato viene inserito nel kill-ring.
La funzione non è associato.
ShellKillWord
Cancellare l'input dal cursore alla fine della parola corrente. Se il cursore è compreso tra le parole, l'input viene cancellato dal cursore alla fine della parola successiva. Il testo cancellato viene inserito nel kill-ring.
La funzione non è associato.
SwapCharacters
Scambia il carattere corrente e quello prima.
- Emacs:
<Ctrl+t> - Modalità di inserimento vi:
<Ctrl+t> - Modalità di comando Vi:
<Ctrl+t>
Disfare
Annullare una modifica precedente.
- Cmd:
<Ctrl+z> - Emacs:
<Ctrl+_>,<Ctrl+x,Ctrl+u> - Modalità di inserimento vi:
<Ctrl+z> - Modalità di comando Vi:
<Ctrl+z>,<u>
AnnullaTutti
Annulla tutte le modifiche precedenti per la riga.
- Modalità di comando Vi:
<U>
UnixWordRubout
Cancellare l'input dall'inizio della parola corrente al cursore. Se il cursore è compreso tra le parole, l'input viene cancellato dall'inizio della parola precedente al cursore. Il testo cancellato viene inserito nel kill-ring.
- Emacs:
<Ctrl+w>
ValidateAndAcceptLine
Tentare di eseguire l'input corrente. Se l'input corrente è incompleto (ad esempio c'è una parentesi chiusa mancante, parentesi quadre o virgolette), la richiesta di continuazione viene visualizzata nella riga successiva e PSReadLine attende che le chiavi modifichino l'input corrente.
- Emacs:
<Ctrl+m>
ViAcceptLine
Accettare la riga e passare alla modalità Inserisci.
- Modalità di comando Vi:
<Enter>
ViAcceptLineOrExit
Come DeleteCharOrExit in modalità Emacs, ma accetta la riga anziché eliminare un carattere.
- Modalità di inserimento vi:
<Ctrl+d> - Modalità di comando Vi:
<Ctrl+d>
ViAppendLine
Sotto la riga corrente viene inserita una nuova riga.
- Modalità di comando Vi:
<o>
ViBackwardDeleteGlob
Elimina la parola precedente, utilizzando solo spazi vuoti come delimitatore di parola.
- Modalità di comando Vi:
<d,B>
ViBackwardGlob
Sposta di nuovo il cursore all'inizio della parola precedente, utilizzando solo spazi vuoti come delimitatori.
- Modalità di comando Vi:
<B>
ViDeleteBrace
Trovare la parentesi graffa corrispondente, parentesi quadre o parentesi quadre ed eliminare tutto il contenuto all'interno, inclusa la parentesi graffa.
- Modalità di comando Vi:
<d,%>
ViDeleteEndOfGlob
Elimina alla fine della parola.
- Modalità di comando Vi:
<d,E>
ViDeleteGlob
Eliminare il glob successivo (parola delimitata da spazi vuoti).
- Modalità di comando Vi:
<d,W>
ViDeleteToBeforeChar
Elimina fino a quando non viene specificato il carattere.
- Modalità di comando Vi:
<d,t>
ViDeleteToBeforeCharBackward
Elimina fino a quando non viene specificato il carattere.
- Modalità di comando Vi:
<d,T>
ViDeleteToChar
Elimina fino a quando non viene specificato il carattere.
- Modalità di comando Vi:
<d,f>
ViDeleteToCharBackward
Elimina all'indietro fino a quando non viene specificato il carattere.
- Modalità di comando Vi:
<d,F>
ViInsertAtBegining
Passare alla modalità Inserisci e posizionare il cursore all'inizio della riga.
- Modalità di comando Vi:
<I>
ViInsertAtEnd
Passare alla modalità Inserisci e posizionare il cursore alla fine della riga.
- Modalità di comando Vi:
<A>
ViInsertLine
Una nuova riga viene inserita sopra la riga corrente.
- Modalità di comando Vi:
<O>
ViInsertWithAppend
Accodamento dalla posizione della riga corrente.
- Modalità di comando Vi:
<a>
ViInsertWithDelete
Eliminare il carattere corrente e passare alla modalità Inserisci.
- Modalità di comando Vi:
<s>
ViJoinLines
Unisce la riga corrente e la riga successiva.
- Modalità di comando Vi:
<J>
ViReplaceLine
Cancellare l'intera riga di comando.
- Modalità di comando Vi:
<S>,<c,c>
ViReplaceToBeforeChar
Sostituisce fino a quando non viene specificato il carattere.
- Modalità di comando Vi:
<c,t>
ViReplaceToBeforeCharBackward
Sostituisce fino a quando non viene specificato il carattere.
- Modalità di comando Vi:
<c,T>
ViReplaceToChar
Elimina fino a quando non viene specificato il carattere.
- Modalità di comando Vi:
<c,f>
ViReplaceToCharBackward
Sostituisce fino a quando non viene specificato il carattere.
- Modalità di comando Vi:
<c,F>
ViYankBeginningOfLine
Yank dall'inizio del buffer al cursore.
- Modalità di comando Vi:
<y,0>
ViYankEndOfGlob
Yank dal cursore alla fine delle PAROLE.
- Modalità di comando Vi:
<y,E>
ViYankEndOfWord
Yank dal cursore alla fine delle parole.
- Modalità di comando Vi:
<y,e>
ViYankLeft
Caratteri Yank a sinistra del cursore.
- Modalità di comando Vi:
<y,h>
ViYankLine
Yank l'intero buffer.
- Modalità di comando Vi:
<y,y>
ViYankNextGlob
Yank dal cursore all'inizio delle parole successive.
- Modalità di comando Vi:
<y,W>
ViYankNextWord
Yank le parole dopo il cursore.
- Modalità di comando Vi:
<y,w>
ViYankPercent
Yank da/verso parentesi graffe corrispondenti.
- Modalità di comando Vi:
<y,%>
ViYankPreviousGlob
Yank dall'inizio delle parole al cursore.
- Modalità di comando Vi:
<y,B>
ViYankPreviousWord
Yank le parole prima del cursore.
- Modalità di comando Vi:
<y,b>
ViYankRight
Caratteri Yank sotto e a destra del cursore.
- Modalità di comando Vi:
<y,l>,<y,Spacebar>
ViYankToEndOfLine
Yank dal cursore alla fine del buffer.
- Modalità di comando Vi:
<y,$>
ViYankToFirstChar
Yank dal primo carattere non vuoto al cursore.
- Modalità di comando Vi:
<y,^>
Strattone
Aggiungere il testo terminato più di recente all'input.
- Emacs:
<Ctrl+y>
YankLastArg
Yank l'ultimo argomento della riga di storia precedente. Con un argomento, la prima volta che viene richiamata, si comporta proprio come YankNthArg. Se richiamato più volte, invece scorre la cronologia e arg imposta la direzione (negativo inverte la direzione).
- Cmd:
<Alt+.> - Emacs:
<Alt+.>,<Alt+_>,<Escape,.>,<Escape,_>
YankNthArg
Yank il primo argomento (dopo il comando) dalla riga di cronologia precedente. Con un argomento, creare il n° argomento (a partire da 0), se l'argomento è negativo, iniziare dall'ultimo argomento.
- Emacs:
<Ctrl+Alt+y>,<Escape,Ctrl+y>
YankPop
Se l'operazione precedente era Yank o YankPop, sostituire il testo precedentemente yanked con il successivo testo ucciso dal kill-ring.
- Emacs:
<Alt+y>,<Escape,y>
Funzioni di spostamento del cursore
BackwardChar
Spostare il cursore un carattere a sinistra. Questo può spostare il cursore sulla riga precedente di input su più righe.
- Cmd:
<LeftArrow> - Emacs:
<LeftArrow>,<Ctrl+b> - Modalità di inserimento vi:
<LeftArrow> - Modalità di comando Vi:
<LeftArrow>,<Backspace>,<h>
IndietroWord
Spostare di nuovo il cursore all'inizio della parola corrente o se tra parole, l'inizio della parola precedente. I limiti di Word sono definiti da un set configurabile di caratteri.
- Cmd:
<Ctrl+LeftArrow> - Emacs:
<Alt+b>,<Escape,b> - Modalità di inserimento vi:
<Ctrl+LeftArrow> - Modalità di comando Vi:
<Ctrl+LeftArrow>
I caratteri che definiscono i limiti delle parole vengono configurati nella proprietà
BeginningOfLine
Se l'input ha più righe, passare all'inizio della riga corrente o, se già all'inizio della riga, passare all'inizio dell'input. Se l'input ha una singola riga, passare all'inizio dell'input.
- Cmd:
<Home> - Emacs:
<Home>,<Ctrl+a> - Modalità di inserimento vi:
<Home> - Modalità di comando Vi:
<Home>
EndOfLine
Se l'input ha più righe, spostarsi alla fine della riga corrente o, se già alla fine della riga, passare alla fine dell'input. Se l'input ha una singola riga, passare alla fine dell'input.
- Cmd:
<End> - Emacs:
<End>,<Ctrl+e> - Modalità di inserimento vi:
<End>
ForwardChar
Spostare il cursore un carattere a destra. Questo può spostare il cursore alla riga successiva di input su più righe.
- Cmd:
<RightArrow> - Emacs:
<RightArrow>,<Ctrl+f> - Modalità di inserimento vi:
<RightArrow> - Modalità di comando Vi:
<RightArrow>,<Space>,<l>
ForwardWord
Spostare il cursore in avanti fino alla fine della parola corrente, o se tra parole, alla fine della parola successiva. I limiti di Word sono definiti da un set configurabile di caratteri.
- Emacs:
<Alt+f>,<Escape,f>
I caratteri che definiscono i limiti delle parole vengono configurati nella proprietà
GotoBrace
Passare alla parentesi graffa, alla parentesi quadra o alla parentesi quadra corrispondente.
- Cmd:
<Ctrl+]> - Modalità di inserimento vi:
<Ctrl+]> - Modalità di comando Vi:
<Ctrl+]>
GotoColumn
Passare alla colonna indicata da arg.
- Modalità di comando Vi:
<|>
GotoFirstNonBlankOfLine
Spostare il cursore sul primo carattere non vuoto nella riga.
- Modalità di comando Vi:
<^>,<_>
MoveToEndOfLine
Spostare il cursore alla fine dell'input.
- Modalità di comando Vi:
<End>,<$>
NextLine
Spostare il cursore alla riga successiva.
- La funzione non è associato.
NextWord
Spostare il cursore in avanti fino all'inizio della parola successiva. I limiti di Word sono definiti da un set configurabile di caratteri.
- Cmd:
<Ctrl+RightArrow> - Modalità di inserimento vi:
<Ctrl+RightArrow> - Modalità di comando Vi:
<Ctrl+RightArrow>
I caratteri che definiscono i limiti delle parole vengono configurati nella proprietà
NextWordEnd
Spostare il cursore in avanti fino alla fine della parola corrente, o se tra parole, alla fine della parola successiva. I limiti di Word sono definiti da un set configurabile di caratteri.
- Modalità di comando Vi:
<e>
I caratteri che definiscono i limiti delle parole vengono configurati nella proprietà
PreviousLine
Spostare il cursore sulla riga precedente.
- La funzione non è associato.
ShellBackwardWord
Spostare di nuovo il cursore all'inizio della parola corrente o se tra parole, l'inizio della parola precedente. I limiti di Word sono definiti dai token di PowerShell.
- La funzione non è associato.
ShellForwardWord
Spostare il cursore in avanti fino all'inizio della parola successiva. I limiti di Word sono definiti dai token di PowerShell.
- La funzione non è associato.
ShellNextWord
Spostare il cursore in avanti fino alla fine della parola corrente, o se tra parole, alla fine della parola successiva. I limiti di Word sono definiti dai token di PowerShell.
- La funzione non è associato.
ViBackwardChar
Spostare il cursore a sinistra nella modalità di modifica Vi. Questo può spostare il cursore sulla riga precedente di input su più righe.
- Modalità di inserimento vi:
<LeftArrow> - Modalità di comando Vi:
<LeftArrow>,<Backspace>,<h>
ViBackwardWord
Spostare di nuovo il cursore all'inizio della parola corrente o se tra parole, l'inizio della parola precedente. I limiti di Word sono definiti da un set configurabile di caratteri.
- Modalità di comando Vi:
<b>
I caratteri che definiscono i limiti delle parole vengono configurati nella proprietà
ViForwardChar
Spostare il cursore a destra nella modalità di modifica Vi. Questo può spostare il cursore alla riga successiva di input su più righe.
- Modalità di inserimento vi:
<RightArrow> - Modalità di comando Vi:
<RightArrow>,<Spacebar>,<l>
ViEndOfGlob
Sposta il cursore alla fine della parola, utilizzando solo spazi vuoti come delimitatori.
- Modalità di comando Vi:
<E>
ViEndOfPreviousGlob
Passa alla fine della parola precedente, utilizzando solo spazi vuoti come delimitatore di parole.
- La funzione non è associato.
ViGotoBrace
Simile a GotoBrace, ma è basato su caratteri anziché basato su token.
- Modalità di comando Vi:
<%>
ViNextGlob
Passa alla parola successiva, utilizzando solo spazi vuoti come delimitatore di parole.
- Modalità di comando Vi:
<W>
ViNextWord
Spostare il cursore in avanti fino all'inizio della parola successiva. I limiti di Word sono definiti da un set configurabile di caratteri.
- Modalità di comando Vi:
<w>
I caratteri che definiscono i limiti delle parole vengono configurati nella proprietà
Funzioni cronologia
BeginningOfHistory
Passare al primo elemento della cronologia.
- Emacs:
<Alt+<>
ClearHistory
Cancella la cronologia in PSReadLine. Ciò non influisce sulla cronologia di PowerShell.
- Cmd:
<Alt+F7>
EndOfHistory
Passare all'ultimo elemento (l'input corrente) nella cronologia.
- Emacs:
<Alt+>>
ForwardSearchHistory
Eseguire una ricerca incrementale in avanti nella cronologia.
- Cmd:
<Ctrl+s> - Emacs:
<Ctrl+s>
HistorySearchBackward
Sostituire l'input corrente con l'elemento 'previous' della cronologia PSReadLine che corrisponde ai caratteri tra l'inizio e l'input e il cursore.
- Cmd:
<F8>
HistorySearchForward
Sostituire l'input corrente con l'elemento 'next' della cronologia PSReadLine che corrisponde ai caratteri tra l'inizio e l'input e il cursore.
- Cmd:
<Shift+F8>
NextHistory
Sostituire l'input corrente con l'elemento 'next' della cronologia di PSReadLine.
- Cmd:
<DownArrow> - Emacs:
<DownArrow>,<Ctrl+n> - Modalità di inserimento vi:
<DownArrow> - Modalità di comando Vi:
<DownArrow>,<j>,<+>
PreviousHistory
Sostituire l'input corrente con l'elemento 'precedente' della cronologia di PSReadLine.
- Cmd:
<UpArrow> - Emacs:
<UpArrow>,<Ctrl+p> - Modalità di inserimento vi:
<UpArrow> - Modalità di comando Vi:
<UpArrow>,<k>,<->
ReverseSearchHistory
Eseguire una ricerca incrementale all'indietro nella cronologia.
- Cmd:
<Ctrl+r> - Emacs:
<Ctrl+r>
ViSearchHistoryBackward
Richiede una stringa di ricerca e avvia la ricerca su AcceptLine.
- Modalità di inserimento vi:
<Ctrl+r> - Modalità di comando Vi:
</>,<Ctrl+r>
Funzioni di completamento
Completo
Tentare di eseguire il completamento del testo che circonda il cursore. Se sono presenti più completamenti possibili, per il completamento viene usato il prefisso non ambiguo più lungo. Se si tenta di completare il completamento non ambiguo più lungo, viene visualizzato un elenco di possibili completamenti.
- Emacs:
<Tab>
MenuComplete
Tentare di eseguire il completamento del testo che circonda il cursore. Se sono presenti più completamenti possibili, per il completamento viene usato il prefisso non ambiguo più lungo. Se si tenta di completare il completamento non ambiguo più lungo, viene visualizzato un elenco di possibili completamenti.
- Cmd:
<Ctrl+@>,<Ctrl+Spacebar> - Emacs:
<Ctrl+Spacebar>
PossibleCompletions
Visualizzare l'elenco dei possibili completamenti.
- Emacs:
<Alt+=> - Modalità di inserimento vi:
<Ctrl+Spacebar> - Modalità di comando Vi:
<Ctrl+Spacebar>
TabCompleteNext
Tentare di completare il testo che circonda il cursore con il completamento successivo disponibile.
- Cmd:
<Tab> - Modalità di comando Vi:
<Tab>
TabCompletePrevious
Tentare di completare il testo che circonda il cursore con il completamento disponibile precedente.
- Cmd:
<Shift+Tab> - Modalità di comando Vi:
<Shift+Tab>
ViTabCompleteNext
Termina il gruppo di modifica corrente, se necessario, e richiama TabCompleteNext.
- Modalità di inserimento vi:
<Tab>
ViTabCompletePrevious
Termina il gruppo di modifica corrente, se necessario, e richiama TabCompletePrevious.
- Modalità di inserimento vi:
<Shift+Tab>
Funzioni varie
AcceptNextSuggestionWord
Accettare la parola successiva del suggerimento inline o selezionato.
- La funzione non è associato.
AcceptSuggestion
Accettare il suggerimento corrente inline o selezionato.
- La funzione non è associato.
CaptureScreen
Avviare l'acquisizione di schermata interattiva: le frecce su/giù selezionano le righe, immettere copie del testo selezionato negli Appunti come testo e HTML.
- La funzione non è associato.
ClearScreen
Cancellare la schermata e disegnare la linea corrente nella parte superiore dello schermo.
- Cmd:
<Ctrl+l> - Emacs:
<Ctrl+l> - Modalità di inserimento vi:
<Ctrl+l> - Modalità di comando Vi:
<Ctrl+l>
DigitArgument
Avviare un nuovo argomento di cifra da passare ad altre funzioni. È possibile usarlo come moltiplicatore per la funzione successiva richiamata da un tasto di scelta rapida. Ad esempio, premendo # invia 10 caratteri # (##########) alla riga di input.
Analogamente, è possibile usarlo con altre operazioni, ad esempio <Delete> o Left-Arrow.
- 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+-> - Modalità di comando Vi:
<0>,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>
InvokePrompt
Cancella il prompt corrente e chiama la funzione prompt per riprodurre nuovamente il prompt. Utile per i gestori di chiavi personalizzati che modificano lo stato. Ad esempio, modificare la directory corrente.
- La funzione non è associato.
ScrollDisplayDown
Scorrere la visualizzazione verso il basso di una schermata.
- Cmd:
<PageDown> - Emacs:
<PageDown>
ScrollDisplayDownLine
Scorrere la visualizzazione verso il basso di una riga.
- Cmd:
<Ctrl+PageDown> - Emacs:
<Ctrl+PageDown>
ScrollDisplayToCursor
Scorrere la visualizzazione fino al cursore.
- Emacs:
<Ctrl+End>
ScrollDisplayTop
Scorrere la visualizzazione fino alla parte superiore.
- Emacs:
<Ctrl+Home>
ScrollDisplayUp
Scorrere lo schermo verso l'alto di una schermata.
- Cmd:
<PageUp> - Emacs:
<PageUp>
ScrollDisplayUpLine
Scorrere la visualizzazione verso l'alto di una riga.
- Cmd:
<Ctrl+PageUp> - Emacs:
<Ctrl+PageUp>
SelfInsert
Inserire la chiave.
- La funzione non è associato.
ShowKeyBindings
Mostra tutte le chiavi associate.
- Cmd:
<Ctrl+Alt+?> - Emacs:
<Ctrl+Alt+?> - Modalità di inserimento vi:
<Ctrl+Alt+?>
ViCommandMode
Passare dalla modalità operativa corrente da Vi-Insert a Vi-Command.
- Modalità di inserimento vi:
<Escape>
ViDigitArgumentInChord
Avviare un nuovo argomento di cifra da passare ad altre funzioni mentre in uno degli accordi di vi.
- La funzione non è associato.
ViEditVisually
Modificare la riga di comando in un editor di testo specificato da $env:EDITOR o $env:VISUAL.
- Emacs:
<Ctrl+x,Ctrl+e> - Modalità di comando Vi:
<v>
ViExit
Esce dalla shell.
- La funzione non è associato.
ViInsertMode
Passare alla modalità Di inserimento.
- Modalità di comando Vi:
<i>
WhatIsKey
Leggere una chiave e indicare a cosa è associata la chiave.
- Cmd:
<Alt+?> - Emacs:
<Alt+?>
Funzioni di selezione
ExchangePointAndMark
Il cursore viene posizionato nella posizione del contrassegno e il segno viene spostato nella posizione del cursore.
- Emacs:
<Ctrl+x,Ctrl+x>
SelectAll (Seleziona tutto)
Selezionare l'intera riga.
- Cmd:
<Ctrl+a>
SelectBackwardChar
Regolare la selezione corrente per includere il carattere precedente.
- Cmd:
<Shift+LeftArrow> - Emacs:
<Shift+LeftArrow>
SelectBackwardsLine
Regolare la selezione corrente in modo da includere dal cursore all'inizio della riga.
- Cmd:
<Shift+Home> - Emacs:
<Shift+Home>
SelectBackwardWord
Regolare la selezione corrente in modo da includere la parola precedente.
- Cmd:
<Shift+Ctrl+LeftArrow> - Emacs:
<Alt+B>
SelectForwardChar
Regolare la selezione corrente per includere il carattere successivo.
- Cmd:
<Shift+RightArrow> - Emacs:
<Shift+RightArrow>
SelectForwardWord
Regolare la selezione corrente in modo da includere la parola successiva usando ForwardWord.
- Emacs:
<Alt+F>
SelectLine
Regolare la selezione corrente in modo da includere dal cursore alla fine della riga.
- Cmd:
<Shift+End> - Emacs:
<Shift+End>
SelectNextWord
Regolare la selezione corrente per includere la parola successiva.
- Cmd:
<Shift+Ctrl+RightArrow>
SelezionareShellBackwardWord
Regolare la selezione corrente per includere la parola precedente usando ShellBackwardWord.
- La funzione non è associato.
SelezionareShellForwardWord
Regolare la selezione corrente per includere la parola successiva usando ShellForwardWord.
- La funzione non è associato.
SelezionareShellAvantiWord
Regolare la selezione corrente per includere la parola successiva usando ShellNextWord.
- La funzione non è associato.
SetMark
Contrassegnare la posizione corrente del cursore da usare in un comando di modifica successivo.
- Emacs:
<Ctrl+@>
Funzioni IntelliSense predittive
Nota
Per usare queste funzioni, è necessario abilitare IntelliSense predittivo.
AcceptNextWordSuggestion
Accetta la parola successiva del suggerimento inline da IntelliSense predittivo. Questa funzione può essere associata con CTRL+F eseguendo il comando seguente.
Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord
AcceptSuggestion
Accetta il suggerimento inline corrente da Predictive IntelliSense premendo RightArrow quando il cursore si trova alla fine della riga corrente.
Funzioni di ricerca
CharacterSearch
Leggere un carattere e cercare in avanti l'occorrenza successiva di tale carattere. Se viene specificato un argomento, cercare avanti (o indietro, se negativo) per l'ennesima occorrenza.
- Cmd:
<F3> - Emacs:
<Ctrl+]> - Modalità di inserimento vi:
<F3> - Modalità di comando Vi:
<F3>
CharacterSearchBackward
Leggere un carattere e cercare all'indietro l'occorrenza successiva di tale carattere. Se viene specificato un argomento, eseguire la ricerca all'indietro (o avanti se negativo) per l'ennesima occorrenza.
- Cmd:
<Shift+F3> - Emacs:
<Ctrl+Alt+]> - Modalità di inserimento vi:
<Shift+F3> - Modalità di comando Vi:
<Shift+F3>
RepeatLastCharSearch
Ripetere l'ultima ricerca di caratteri registrata.
- Modalità di comando Vi:
<;>
RepeatLastCharSearchBackwards
Ripetere l'ultima ricerca di caratteri registrata, ma nella direzione opposta.
- Modalità di comando Vi:
<,>
RepeatSearch
Ripetere l'ultima ricerca nella stessa direzione di prima.
- Modalità di comando Vi:
<n>
RepeatSearchBackward
Ripetere l'ultima ricerca nella stessa direzione di prima.
- Modalità di comando Vi:
<N>
SearchChar
Leggere il carattere successivo e quindi trovarlo, andare avanti e quindi tornare indietro di un carattere. Questo vale per la funzionalità 't'.
- Modalità di comando Vi:
<f>
SearchCharBackward
Leggere il carattere successivo e quindi trovarlo, tornare indietro e quindi tornare indietro di un carattere. Questo è per la funzionalità 'T'.
- Modalità di comando Vi:
<F>
SearchCharBackwardWithBackoff
Leggere il carattere successivo e quindi trovarlo, tornare indietro e quindi tornare indietro di un carattere. Questo è per la funzionalità 'T'.
- Modalità di comando Vi:
<T>
SearchCharWithBackoff
Leggere il carattere successivo e quindi trovarlo, andare avanti e quindi tornare indietro di un carattere. Questo vale per la funzionalità 't'.
- Modalità di comando Vi:
<t>
SearchForward
Richiede una stringa di ricerca e avvia la ricerca su AcceptLine.
- Modalità di inserimento vi:
<Ctrl+s> - Modalità di comando Vi:
<?>,<Ctrl+s>
Tasti di scelta rapida personalizzati
PSReadLine supporta associazioni di chiavi personalizzate usando il cmdlet Set-PSReadLineKeyHandler. La maggior parte delle associazioni di tasti personalizzate chiama una delle funzioni precedenti, ad esempio
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
È possibile associare un oggetto ScriptBlock a una chiave. ScriptBlock può eseguire praticamente qualsiasi operazione desiderata. Alcuni esempi utili includono
- modificare la riga di comando
- apertura di una nuova finestra (ad esempio, guida)
- modificare le directory senza modificare la riga di comando
ScriptBlock riceve due argomenti:
$key: oggetto [ConsoleKeyInfo] che rappresenta la chiave che ha attivato l'associazione personalizzata. Se si associa lo stesso ScriptBlock a più chiavi ed è necessario eseguire azioni diverse a seconda della chiave, è possibile controllare $key. Molte associazioni personalizzate ignorano questo argomento.$arg: argomento arbitrario. Nella maggior parte dei casi, si tratta di un argomento integer che l'utente passa dalle associazioni di chiave DigitArgument. Se l'associazione non accetta argomenti, è ragionevole ignorare questo argomento.
Di seguito viene illustrato un esempio che aggiunge una riga di comando alla cronologia senza eseguirla. Ciò è utile quando ci si rende conto di aver dimenticato di eseguire un'operazione, ma non si vuole immettere nuovamente la riga di comando già immessa.
$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
È possibile visualizzare molti altri esempi nel file SamplePSReadLineProfile.ps1 installato nella cartella del modulo PSReadLine.
La maggior parte dei tasti di scelta rapida usa alcune funzioni helper per la modifica della riga di comando. Queste API sono documentate nella sezione successiva.
API di supporto per l'associazione di chiavi personalizzate
Le funzioni seguenti sono pubbliche in Microsoft.PowerShell.PSConsoleReadLine, ma non possono essere associate direttamente a una chiave. La maggior parte è utile nelle associazioni di tasti personalizzate.
void AddToHistory(string command)
Aggiungere una riga di comando alla cronologia senza eseguirla.
void ClearKillRing()
Cancellare l'anello di morte. Questa operazione viene usata principalmente per i test.
void Delete(int start, int length)
Eliminare i caratteri di lunghezza dall'inizio. Questa operazione supporta l'annullamento/rollforward.
void Ding()
Eseguire l'azione Ding in base alle preferenze degli utenti.
void GetBufferState([ref] string input, [ref] int cursor)
void GetBufferState([ref] Ast ast, [ref] Token[] tokens,
[ref] ParseError[] parseErrors, [ref] int cursor)
Queste due funzioni recuperano informazioni utili sullo stato corrente del buffer di input. Il primo è più comunemente usato per i casi semplici. Il secondo viene usato se l'associazione esegue un'operazione più avanzata con Ast.
IEnumerable[Microsoft.PowerShell.KeyHandler]
GetKeyHandlers(bool includeBound, bool includeUnbound)
IEnumerable[Microsoft.PowerShell.KeyHandler]
GetKeyHandlers(string[] Chord)
Queste due funzioni vengono usate da Get-PSReadLineKeyHandler. Il primo viene usato per ottenere tutti i tasti di scelta rapida. Il secondo viene usato per ottenere associazioni di tasti specifiche.
Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()
Questa funzione viene usata da Get-PSReadLineOption e probabilmente non è troppo utile in un'associazione di tasti personalizzata.
void GetSelectionState([ref] int start, [ref] int length)
Se non è presente alcuna selezione nella riga di comando, la funzione restituisce -1 sia all'inizio che alla lunghezza. Se è presente una selezione nella riga di comando, viene restituita la lunghezza e l'inizio della selezione.
void Insert(char c)
void Insert(string s)
Inserire un carattere o una stringa nel cursore. Questa operazione supporta l'annullamento/rollforward.
string ReadLine(runspace remoteRunspace,
System.Management.Automation.EngineIntrinsics engineIntrinsics)
Si tratta del punto di ingresso principale di PSReadLine. Non supporta la ricorsione, pertanto non è utile in un'associazione di tasti personalizzata.
void RemoveKeyHandler(string[] key)
Questa funzione viene usata da Remove-PSReadLineKeyHandler e probabilmente non è troppo utile in un'associazione di tasti personalizzata.
void Replace(int start, int length, string replacement)
Sostituire parte dell'input. Questa operazione supporta l'annullamento/rollforward. Questa opzione è preferibile rispetto a Elimina seguita da Inserisci perché viene considerata come una singola azione per l'annullamento.
void SetCursorPosition(int cursor)
Spostare il cursore sull'offset specificato. Lo spostamento del cursore non viene rilevato per l'annullamento.
void SetOptions(Microsoft.PowerShell.SetPSReadLineOption options)
Questa funzione è un metodo helper usato dal cmdlet Set-PSReadLineOption, ma potrebbe essere utile per un'associazione di tasti personalizzata che desidera modificare temporaneamente un'impostazione.
bool TryGetArgAsInt(System.Object arg, [ref] int numericArg,
int defaultNumericArg)
Questo metodo helper viene usato per associazioni personalizzate che rispettano DigitArgument. Una chiamata tipica ha un aspetto simile al seguente
[int]$numericArg = 0
[Microsoft.PowerShell.PSConsoleReadLine]::TryGetArgAsInt($arg,
[ref]$numericArg, 1)
Note
Cronologia comandi
PSReadLine gestisce un file di cronologia contenente tutti i comandi e i dati immessi dalla riga di comando. I file di cronologia sono un file denominato $($host.Name)_history.txt. Nei sistemi Windows il file di cronologia viene archiviato in $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine. Nei sistemi non Windows i file di cronologia vengono archiviati in $env:XDG_DATA_HOME/powershell/PSReadLine o $env:HOME/.local/share/powershell/PSReadLine.
La cronologia può contenere dati sensibili, incluse le password. PSReadLine tenta di filtrare le informazioni riservate. Le righe di comando contenenti le stringhe seguenti non vengono scritte nel file di cronologia.
- parola d’ordine
- asplaintext
- token
- apikey
- segreto
Feedback & contribuire a PSReadLine
È possibile inviare una richiesta pull o inviare commenti e suggerimenti nella pagina GitHub.
Vedere anche
- PSReadLine è fortemente influenzato dalla libreria gnu readline.