Eu amo o Powershell, mas, vindo do Linux, há algumas coisas que realmente me incomodam. Por exemplo, como o preenchimento automático padrão funciona.
Por exemplo: Get-PS se expande para "Get-PSBreakpoint", que é o primeiro comando correspondente. No bash, se houver apenas um comando correspondente, o bash será expandido para o comando correspondente. Se houver várias guias pressionando uma vez, nada fará, uma guia de toque duplo exibirá uma lista de comandos correspondentes, mas não expandindo. Existe uma maneira de fazer o Powershell se comportar assim?
E outra coisa, se eu escrevi uma linha, e move o marcador de volta para um comando anterior (o marcador é onde está o ^):
"Get-PSS ^ | Remove-PSSession" é concluído automaticamente como "Get-PSSession ^", removendo todos os comandos à direita. No bash, os comandos à direita ainda não seriam afetados. Existe uma maneira de fazer com que o Powershell não remova os comandos finais ao concluir automaticamente?
Um bônus seria obter CTRL + L para limpar a tela. CTRL + A para ir para o início da linha e CTRL + E para ir para o final da linha.
fonte
Respostas:
Confira PSReadline .
Do artigo:
Eu uso diariamente!
fonte
Set-PSReadlineKeyHandler -Key Tab -Function Complete
CompleteMenu
em vez deComplete
para uma mais bash-como experiência, ele permite que você use as setas do teclado para navegar nas opçõesTalvez você deva dar uma olhada no Powertab , uma expansão personalizável do PowerShell Tab.
fonte
oi peter basta pressionar F8 para algo como speedearch. Ele termina com os comandos que você executa anteriormente que começam com o que você tem na linha. O problema com a exclusão da trilha é irritante, escrevo uma sugestão no Connect sobre o mesmo problema. No tempo principal, você pode usar o Powershell ISE, que se comporta um pouco melhor (não exclua os caracteres finais).
fonte
O antigo subsistema command.exe ainda está envolvido no PowerShell e força muitos comportamentos desagradáveis. Porém, a partir do PowerShell v3, a GUI (PowerShell ISE) agora é utilizável e inclui uma experiência de conclusão muito mais moderna + colorização.
fonte
O PowerShell usa os mesmos recursos de console que o venerável prompt de comando; para que você tenha o habitual Início / Fim e:
... mas não há possibilidade de mostrar todas as conclusões possíveis, até onde eu sei.
fonte
PowerShell regular usa cmd como janela do prompt de comando. É por isso que ele tem um enorme legado (os programas retransmitem o comportamento do antigo cmd por idades) que não pode ser alterado devido à comparabilidade retroativa.
Eu recomendo que você use o powershell_ise em vez do powershell (está incluído no pacote padrão do powershell). A versão 3.0 (não tenho certeza sobre o anterior) suporta o Intellisense da caixa. Isso é muito próximo ao estilo de conclusão do bash. Basta pressionar Ctrl + Espaço em vez de Tab. Tenho problemas com conclusões personalizadas no PowerTab, mas o Intellisense funciona bem com ele. O Powershell_ise também preserva os comandos à direita, possui o modo de seleção normal, suporta Ctrl + C, Ctrl + V, Ctrl + A para o comando selecionado, então Ctrl + A, pula para o início da linha, Ctrl + A, até o fim (ou Início /Fim).
fonte
O PowerShell usa seu próprio analisador para comandos, portanto, de certa forma, é um shell diferente do cmd.exe, mesmo que eles compartilhem o mesmo terminal (janela da GUI).
Devido a essa diferença, o PowerShell permite substituir a funcionalidade de preenchimento de guias por sua própria função. Eu não tive tempo de mexer com isso sozinho, mas você basicamente substitui a função
tabexpansion
em seu perfil, da mesma maneira que pode substituí-laprompt
.Encontrei este artigo , de Lee Holmes (autor do incrível livro de receitas do Windows PowerShell ), que descreve uma substituição de tabexpansion muito semelhante à que você está procurando. Você provavelmente poderia ajustá-lo para fornecer exatamente o que deseja.
fonte