Autopreenchimento com TAB (winget)

A ferramenta de linha de comando winget oferece um comando complete para fornecer o autopreenchimento com TAB sensível ao contexto. Ela dá suporte ao preenchimento de nomes de comando, nomes de argumentos e valores de argumento, dependendo do estado da linha de comando no momento.

Ativar o recurso auto-completar com TAB

Para habilitar o autopreenchimento com TAB usando o winget, você deve adicionar o script a seguir ao seu $PROFILE no PowerShell.

  1. Abra o PowerShell e insira o seguinte comando para abrir o $PROFILE no Bloco de notas: notepad.exe $PROFILE

  2. Copie e cole o seguinte script no arquivo $PROFILE que foi aberto no Bloco de notas:

    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. Salve o $PROFILE com o script. Em seguida, feche e reabra o PowerShell. Depois que o PowerShell for reaberto, o autopreenchimento com TAB do winget será habilitado.

Exemplos de autopreenchimento com TAB

Pressionamentos repetidos da tecla TAB () resultarão em passar pela sequência dos valores possíveis.

Entrada Result Motivo
winget ⇥ winget install install é o primeiro comando abaixo da raiz
winget sh⇥ winget show show é o primeiro comando que começa com sh
winget source l⇥ winget source list list é o primeiro subcomando da fonte que começa com l
winget -⇥ winget --version --version é o primeiro argumento definido para a raiz
winget install power⇥ winget install "Power Toys" "Power Toys" é o primeiro pacote cuja ID, Nome ou Moniker começa com power
winget install "Power Toys" --version ⇥ winget install "Power Toys" --version 0.19.2 0.19.2 é a versão mais recente do Power Toys no momento da escrita

Referência de comando

O comando completo recebe três argumentos necessários:

Argumento Descrição
--word A palavra atual que está sendo autopreenchida; o token no qual o cursor está localizado. Pode estar vazio para indicar que não há nenhum valor atual no cursor, mas, se fornecido, ele deverá aparecer como uma substring na linha de comando.
--commandline Toda a linha de comando atual, incluindo winget. Veja os exemplos acima; tudo, exceto o caractere de tabulação () deve ser fornecido a esse argumento.
--position A posição atual do cursor na linha de comando. Pode ser maior que o comprimento da cadeia de caracteres da linha de comando para indicar no final.

Quando um valor de palavra é fornecido, o autopreenchimento opera no modo de substituição. Ele vai sugerir preenchimentos que se podem se ajustar corretamente neste local que também começa com o valor da palavra fornecida.

Quando um valor de palavra não é fornecido (um valor vazio é fornecido para a palavra, ex. --word=), o autopreenchimento opera no modo de inserção. Ele vai sugerir preenchimentos que se podem se ajustar como um novo valor no local do cursor.

Com base nos argumentos, os preenchimentos automáticos sugeridos podem ser um dos seguintes:

  1. Um subcomando :: o cursor está localizado logo após um comando e há subcomandos disponíveis.
  2. Um especificador de argumento :: o cursor não está posicionado após um especificador de argumento que espera um valor e há argumentos disponíveis.
  3. Um valor de argumento :: o cursor está posicionado após um especificador de argumento que espera um valor ou um argumento posicional é esperado.

Depois de avaliar todos esses casos, os possíveis preenchimentos automáticos são mostrado, um em cada linha. Se a cadeia de caracteres de preenchimento automático contiver um espaço, ela será encapsulada entre aspas.