Compartilhar via


Usando preditores no PSReadLine

O PSReadLine 2.1.0 apresentou o recurso de IntelliSense Preditivo. O IntelliSense Preditivo fornece sugestões para comandos completos com base em itens do histórico do PSReadLine. O PSReadLine 2.2.2 estende a potência do IntelliSense Preditivo adicionando suporte para módulos de plug-in que usam lógica avançada para fornecer sugestões para comandos completos. A versão mais recente, PSReadLine 2.2.6, habilita previsões por padrão.

Usando o IntelliSense Preditivo

Quando o IntelliSense Preditivo é habilitado, a sugestão de previsão aparece como texto colorido seguindo o cursor do usuário. As sugestões do IntelliSense Preditivo ajudam usuários novos e experientes do PowerShell a descobrir, editar e executar comandos completos com base em previsões correspondentes. As sugestões podem vir do histórico do usuário e de plug-ins específicos de domínio adicionais.

Exibição embutida de uma previsão

As imagens anteriores mostram o InlineView padrão da sugestão. Pressionar a tecla RightArrow aceita uma sugestão embutida. Após aceitar a sugestão, você pode editar a linha de comando antes de clicar em Enter para executar o comando.

PSReadLine também oferece uma apresentação ListView das sugestões.

Exibição em lista das previsões

Quando está no modo de exibição de lista, você pode usar as teclas de direção para percorrer as sugestões disponíveis. A exibição de lista também mostra a origem da previsão.

PSReadLine usa InlineViewcomo padrão. Você pode alternar entre InlineView e ListView pressionando a tecla F2. Você também pode usar o parâmetro PredictionViewStyle de Set-PSReadLineOption para alterar a exibição.

Gerenciando o IntelliSense Preditivo

Para usar o IntelliSense Preditivo, você precisa ter uma versão mais recente do PSReadLine instalada. Para obter os melhores resultados, instale a versão mais recente do módulo.

Para instalar PSReadLine usando PowerShellGet:

Install-Module -Name PSReadLine

Ou instale usando o novo módulo do PowerShellGet v3:

Install-PSResource -Name PSReadLine

PSReadLine pode ser instalado no Windows PowerShell 5.1 ou no PowerShell 7 ou superior. Para usar plug-ins de preditor, você precisa estar executando no PowerShell 7.2 ou superior. O Windows PowerShell 5.1 pode usar o preditor baseado em histórico.

No PSReadLine 2.2.6, o IntelliSense Preditivo é habilitado por padrão dependendo das seguintes condições:

  • Se houver suporte para o VT (Terminal Virtual) e o PSReadLine estiver em execução no PowerShell 7.2 ou superior, PredictionSource será definido como HistoryAndPlugin
  • Se houver suporte para o VT e PSReadLine estiver em execução no PowerShell superior ao 7.2, PredictionSource será definido como History
  • Se não houver suporte para o VT, PredictionSource será definido como None.

Use o seguinte comando para ver a configuração atual:

Get-PSReadLineOption | Select-Object -Property PredictionSource

Você pode alterar a fonte de previsão usando o cmdlet Set-PSReadLineOption com o parâmetro PredictionSource. O PredictionSource pode ser definido como:

  • None
  • History
  • Plugin
  • HistoryAndPlugin

Observação

As previsões baseadas em histórico vêm do histórico mantido por PSReadLine. Esse histórico é mais abrangente que o histórico baseado em sessão que você pode ver usando Get-History. Para obter mais informações, consulte a seção Histórico de comandos de about_PSReadLine.

Definindo a cor da previsão

Por padrão, as previsões aparecem em texto cinza claro na mesma linha que o usuário está digitando. Para dar suporte a necessidades de acessibilidade, você pode personalizar a cor da previsão. As cores são definidas usando sequências de escape ANSI. Você pode usar $PSStyle para compor sequências de escape ANSI.

Set-PSReadLineOption -Colors @{ InlinePrediction = $PSStyle.Background.Blue }

Ou pode criar as suas. A cor do texto de previsão cinza-claro padrão pode ser restaurada usando a sequência de escape ANSI a seguir.

Set-PSReadLineOption -Colors @{ InlinePrediction = "`e[38;5;238m" }

Para obter mais informações sobre como definir a cor da previsão e outras configurações de PSReadLine, consulte Set-PSReadLineOption.

Alterando as associações de teclas

PSReadLine contém funções para navegar e aceitar previsões. Por exemplo:

  • AcceptSuggestion – aceitar a sugestão embutida atual
  • AcceptNextSuggestionWord – aceitar a próxima palavra da sugestão embutida
  • AcceptSuggestion é criado em ForwardChar, que está associado a RightArrow por padrão
  • AcceptNextSuggestionWord é criado na função ForwardWord, que pode ser associada a Ctrl+f

Você pode usar o cmdlet Set-PSReadLineKeyHandler para alterar as associações de chaves.

Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord

Com essa associação, pressionar Ctrl+f aceita a próxima palavra de uma sugestão embutida quando o cursor está no final da linha de edição atual. Você pode associar outras teclas a AcceptSuggestion e AcceptNextSuggestionWord para funcionalidades semelhantes. Por exemplo, talvez você queira fazer RightArrow aceitar a próxima palavra da sugestão embutida, em vez de toda a linha da sugestão.

Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord

Usando outros plug-ins de preditor

O módulo Az.Tools.Predictor foi o primeiro plug-in do IntelliSense Preditivo. Ele usa o Machine Learning para prever qual comando do Azure PowerShell você deseja executar e os parâmetros que deseja usar. Para obter mais informações e instruções de instalação, consulte Anunciando a disponibilidade geral do Az.Tools.Predictor.

O módulo CompletionPredictor adiciona uma experiência de IntelliSense a qualquer coisa que possa ser concluída com tabulação no PowerShell. Com PSReadLine definido como InlineView, você tem a experiência normal de conclusão com tabulação. Quando alterna para ListView, você obtém a experiência do IntelliSense. Você pode instalar o módulo CompletionPredictor da Galeria do PowerShell.

IntelliSense do PowerShell usando o CompletionPredictor

Como observado anteriormente, ListView mostra a origem da previsão. Se você tiver vários plug-ins instalados, as previsões serão agrupadas por origem, com o Histórico listado primeiro seguido por cada plug-in na ordem em que foram carregados.

Criando seu módulo de preditor

Você pode escrever seu preditor usando C# para criar um módulo compilado do PowerShell. O módulo deve implementar a interface System.Management.Automation.Subsystem.Prediction.ICommandPredictor. Essa interface declara os métodos usados para consultar resultados de previsão e fornecer feedback.

Para obter mais informações, consulte Como criar um preditor de linha de comando.