Partilhar via


Preenchimento de tabulação (winget)

A ferramenta de linha de comando winget oferece um comando complete para fornecer conclusão de guia sensível ao contexto. Ele suporta a conclusão de nomes de comandos, nomes de argumentos e valores de argumentos, dependendo do estado atual da linha de comandos.

Ativar conclusão automática com tab

Para habilitar o preenchimento de guias com winget, você deve adicionar o seguinte script ao seu $PROFILE no PowerShell.

  1. Abra o PowerShell e digite o seguinte comando para abrir o seu $PROFILE no Bloco de Notas: notepad.exe $PROFILE

  2. Copie e cole o seguinte script no $PROFILE arquivo 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 seu script. Em seguida, feche e reabra o PowerShell. Depois que o PowerShell for reaberto, a conclusão da guia winget será habilitada.

Exemplos de preenchimento de guias

Pressionamentos repetidos de tab () resultarão em ciclos através dos valores possíveis.

Entrada Resultado 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 do código-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 cujo Id, Name 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 alta do Power Toys no momento da redação

Referência de comando

O comando completo usa 3 argumentos necessários:

Argumento Descrição
--word A palavra atual que está sendo completada; O token no qual o cursor está localizado. Pode estar vazio para indicar nenhum valor atual no cursor, mas se fornecido, ele deve 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 este argumento.
--position A posição atual do cursor na linha de comando. Pode ser maior do que o comprimento da cadeia de caracteres da linha de comando para indicar no final.

Quando um valor de uma palavra é fornecido, a conclusão opera no modo de substituição. Ele irá sugerir completações que se encaixariam corretamente neste local que também começam com o valor da palavra dada.

Quando não é fornecido um valor de palavra (é fornecido um valor vazio para palavra, por exemplo, --word=), a conclusão opera no modo de inserção. Ele irá sugerir completações que caberiam como um novo valor na localização do cursor.

Com base nos argumentos, as conclusões sugeridas podem ser uma das 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 é posicionado após um especificador de argumento que espera um valor, e há argumentos disponíveis.
  3. Um valor de argumento :: O cursor é posicionado após um especificador de argumento que espera um valor, ou um argumento posicional é esperado.

Depois de avaliar todos esses casos, as possíveis conclusões são geradas, uma por linha. Se a sequência de conclusão contiver um espaço, ela será encerrada em aspas.