Usando preditores em PSReadLine

O PSReadLine 2.1.0 introduziu o recurso Predictive IntelliSense . O IntelliSense preditivo fornece sugestões para comandos completos com base em itens do seu histórico PSReadLine . O PSReadLine 2.2.2 amplia o poder do Predictive IntelliSense 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, permite previsões por padrão.

Usando o IntelliSense Preditivo

Quando o IntelliSense Preditivo está ativado, a sugestão de previsão aparece como texto colorido seguindo o cursor do usuário. As sugestões do Predictive IntelliSense ajudam os 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 adicionais específicos do domínio.

Vista em linha de uma previsão

As imagens anteriores mostram o padrão InlineView da sugestão. Pressionar a tecla Seta para a direita aceita uma sugestão embutida. Depois de aceitar a sugestão, você pode editar a linha de comando antes de pressionar Enter para executar o comando.

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

Visualização de lista de previsões

Quando estiver na vista de lista, pode utilizar as teclas de seta para percorrer as sugestões disponíveis. O modo de exibição de lista também mostra a origem da previsão.

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

Gerenciando o IntelliSense Preditivo

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

Para instalar o PSReadLine usando o PowerShellGet:

Install-Module -Name PSReadLine

Ou instale usando o novo módulo PowerShellGet v3 :

Install-PSResource -Name PSReadLine

O PSReadLine pode ser instalado no Windows PowerShell 5.1 ou no PowerShell 7 ou superior. Para usar plug-ins de previsão, você deve 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 Predictive IntelliSense é ativado por padrão, dependendo das seguintes condições:

  • Se o Terminal Virtual (VT) for suportado e PSReadLine em execução no PowerShell 7.2 ou superior, PredictionSource será definido como HistoryAndPlugin
  • Se VT for suportado e PSReadLine em execução no PowerShell anterior à 7.2, PredictionSource será definido como History
  • Se VT não for suportado, 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 Set-PSReadLineOption cmdlet com o parâmetro PredictionSource . O PredictionSource pode ser definido como:

  • None
  • History
  • Plugin
  • HistoryAndPlugin

Nota

As previsões baseadas na história vêm da história mantida pelo PSReadLine. Esse histórico é mais abrangente do que o histórico baseado em sessão que você pode ver usando Get-Historyo . Para obter mais informações, consulte a seção Histórico de comandos do 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 às 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 você pode criar o seu próprio. A cor padrão do texto de previsão cinza-claro pode ser restaurada usando a seguinte sequência de escape ANSI.

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

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

Alterar ligações de teclas

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

  • AcceptSuggestion - Aceite a sugestão atual em linha
  • AcceptNextSuggestionWord - Aceite a próxima palavra da sugestão inline
  • AcceptSuggestion é construído dentro do ForwardChar, que está vinculado à Seta para a direita por padrão
  • AcceptNextSuggestionWordé construído dentro da função ForwardWord, que pode ser vinculada a Ctrl+f

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

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

Com essa ligação, pressionar Ctrl+f aceita a próxima palavra de uma sugestão embutida quando o cursor estiver no final da linha de edição atual. Pode ligar outras teclas a AcceptSuggestion e AcceptNextSuggestionWord para funcionalidades semelhantes. Por exemplo, você pode querer fazer com que o RightArrow aceite a próxima palavra da sugestão embutida, em vez de toda a linha de sugestão.

Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord

Usando outros plug-ins de previsão

O módulo Az.Tools.Predictor foi o primeiro plug-in para o Predictive IntelliSense. Ele usa o Aprendizado de Máquina 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 IntelliSense para qualquer coisa que possa ser concluída com tabulações no PowerShell. Com PSReadLine definido como InlineView, você obtém a experiência normal de conclusão de guias. Ao mudar para ListViewo , você obtém a experiência IntelliSense. Você pode instalar o módulo CompletionPredictor da Galeria do PowerShell.

PowerShell IntelliSense usando o CompletionPredictor

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

Criando seu próprio módulo de previsão

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

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