Dokončování tabulátoru (winget)

Nástroj příkazového řádku winget nabízí příkaz, který poskytuje dokončování tabulátoru complete citlivé na kontext. Podporuje dokončování názvů příkazů, názvů argumentů a hodnot argumentů závislých na aktuálním stavu příkazového řádku.

Povolit dokončování tabulátoru

Pokud chcete povolit dokončování tabulátoru pomocí wingetu, musíte do $PROFILE v PowerShellu přidat následující skript.

  1. Otevřete PowerShell a zadejte následující příkaz k otevření vašeho $PROFILE v Poznámkovém bloku: notepad.exe $PROFILE

  2. Zkopírujte a vložte následující skript do $PROFILE souboru, který byl otevřen v Poznámkovém bloku:

    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. Uložte $PROFILE pomocí skriptu. Potom PowerShell zavřete a znovu otevřete. Po opětovném otevření PowerShellu bude povoleno dokončování příkazů winget.

Příklady dokončování příkazů pomocí klávesy Tab

Opakované stisknutí tabulátoru () způsobí cyklické procházení možnými hodnotami.

Vstup Výsledek Důvod
winget ⇥ winget install install je první příkaz pod kořenem.
winget sh⇥ winget show show je první příkaz, který začíná na sh
winget source l⇥ winget source list list je první dílčí příkaz zdroje, který začíná na l
winget -⇥ winget --version --version je první argument definovaný pro kořen.
winget install power⇥ winget install "Power Toys" "Power Toys" je první balíček, jehož ID, název nebo moniker začíná na power
winget install "Power Toys" --version ⇥ winget install "Power Toys" --version 0.19.2 0.19.2 je nejnovější verze softwaru Power Toys v době psaní tohoto textu.

Referenční dokumentace k příkazům

Úplný příkaz má 3 požadované argumenty:

Důvod Popis
--word Aktuální slovo, které je dokončeno; token, v rámci kterého je kurzor umístěn. Může být prázdný, aby na kurzoru nezvýrazní žádnou aktuální hodnotu, ale pokud je zadaný, musí se v příkazovém řádku zobrazit jako podřetěděcí řetězec.
--commandline Celý aktuální příkazový řádek, včetně winget. Podívejte se na výše uvedené příklady; všem kromě znaku tabulátoru () by měl být tento argument poskytnut.
--position Aktuální pozice kurzoru v příkazovém řádku. Může být větší než délka řetězce příkazového řádku, který se má na konci označit.

Pokud je zadaná hodnota slova, dokončení funguje v režimu nahrazení. Navrhne dokončení, která by správně zapadla na toto místo a začínala daným slovem.

Pokud není zadaná hodnota slova (pro slovo je zadaná prázdná hodnota, např. --word=), dokončení funguje v režimu vložení. Navrhne dokončení, která by se vešla jako nová hodnota v umístění kurzoru.

Na základě argumentů mohou být navrhovaná dokončení jedním z následujících:

  1. Dílčí příkaz :: Kurzor se nachází hned za příkazem a k dispozici jsou dílčí příkazy.
  2. Specifikátor argumentu :: Kurzor není umístěn za specifikátorem argumentu, který očekává hodnotu a jsou k dispozici argumenty.
  3. Hodnota argumentu :: Kurzor je umístěn za specifikátorem argumentu, který očekává hodnotu, nebo je očekáván poziční argument.

Po vyhodnocení všech těchto případů jsou potenciální dokončení zobrazena, jeden na každém řádku. Pokud dokončovací řetězec obsahuje mezeru, zabalí se do uvozovek.