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.
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.
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 InlineView
como 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 atualAcceptNextSuggestionWord
– aceitar a próxima palavra da sugestão embutidaAcceptSuggestion
é criado emForwardChar
, que está associado a RightArrow por padrãoAcceptNextSuggestionWord
é criado na funçãoForwardWord
, 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.
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.