Completamento tramite tabulazione (winget)

Lo strumento da riga di comando winget offre un comando complete per fornire il completamento della scheda sensibile al contesto. Supporta il completamento dei nomi dei comandi, dei nomi degli argomenti e dei valori degli argomenti, a seconda dello stato della riga di comando corrente.

Abilitare il completamento automatizzato tramite tabulazione

Per abilitare il completamento tab con winget, è necessario aggiungere lo script seguente al $PROFILE in PowerShell.

  1. Aprire PowerShell e immettere il comando seguente per aprire il $PROFILE nel Blocco note: notepad.exe $PROFILE

  2. Copia e incolla il seguente script nel file $PROFILE che si è aperto in Blocco note:

    Register-ArgumentCompleter -Native -CommandName winget -ScriptBlock {
        param($wordToComplete, $commandAst, $cursorPosition)
            [Console]::InputEncoding = [Console]::OutputEncoding = $OutputEncoding = [System.Text.Utf8Encoding]::new()
            $Local:word = $wordToComplete.Replace('"', '""')
            $Local:ast = $commandAst.ToString().Replace('"', '""')
            winget complete --word="$Local:word" --commandline "$Local:ast" --position $cursorPosition | ForEach-Object {
                [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
            }
    }
    
  3. Salva il $PROFILE con il tuo script. Quindi chiudere e riaprire PowerShell. Dopo la riapertura di PowerShell, il completamento della scheda winget verrà abilitato.

Esempi di completamento delle schede

Le pressioni ripetute del tasto tab () consentiranno di scorrere tra i valori possibili.

Inserimento Risultato Motivo
winget ⇥ winget install install è il primo comando sotto il root
winget sh⇥ winget show show è il primo comando che inizia con sh
winget source l⇥ winget source list list è il primo sottocomando di origine che inizia con l
winget -⇥ winget --version --version è il primo argomento definito per la radice
winget install power⇥ winget install "Power Toys" "Power Toys" è il primo pacchetto il cui ID, nome o moniker inizia con power
winget install "Power Toys" --version ⇥ winget install "Power Toys" --version 0.19.2 0.19.2 è la versione più alta di Power Toys al momento della scrittura

Informazioni di riferimento sul comando

Il comando completo accetta 3 argomenti obbligatori:

Argomentazione Descrizione
--word La parola corrente che viene completata; il token all'interno del quale si trova il cursore. Può essere vuoto per indicare nessun valore corrente al cursore, ma se specificato, deve essere presente come sottostringa nella riga di comando.
--commandline L'intera riga di comando corrente, inclusa winget. Consulta gli esempi precedenti; tutto, ma il carattere di tabulazione () dovrebbe essere fornito come argomento.
--position Posizione corrente del cursore nella riga di comando. Può essere maggiore della lunghezza della stringa della riga di comando per segnalare la fine.

Quando viene specificato un valore di parola chiave, il completamento funziona in modalità sostituzione. Suggerisce i completamenti che si adattano correttamente a questa posizione e che iniziano con il valore della parola specificato.

Quando non viene specificato un valore di parola (viene fornito un valore vuoto per word, ad esempio --word=), il completamento opera in modalità di inserimento. Suggerisce i completamenti che si adattano come nuovo valore nella posizione del cursore.

In base agli argomenti, i completamenti suggeriti possono essere:

  1. Comando secondario :: il cursore si trova subito dopo un comando e sono disponibili comandi secondari.
  2. Specificatore di argomento :: Il cursore non è posizionato dopo uno specificatore di argomento che richiede un valore e ci sono argomenti disponibili.
  3. Valore dell'argomento :: il cursore viene posizionato dopo un identificatore di argomento che prevede un valore o è previsto un argomento posizionale.

Dopo aver valutato tutti questi casi, i potenziali completamenti vengono restituiti, uno per riga. Se la stringa di completamento contiene uno spazio, viene racchiusa tra virgolette.