Equivalente ao Ctrl-r do bash no PowerShell

19

alguém sabe uma maneira de ter o recurso de pesquisa de comando para trás do bash [Ctrl-r](e [Ctrl-o]) que são tão úteis, no windows powershell?

C-ré uma arrow upmanipulação de história mais poderosa , é como a do emacs, C-rna medida em que pesquisa para trás dentro dos comandos que você digitou anteriormente. Em seguida, C-oexecuta esse comando e coloca imediatamente na linha o próximo comando depois disso. Para que você possa repetir séries passadas de comandos com eficiência. Também procura um histórico salvo, não um histórico de sessão. ( ~/.bash_historyarquivo). O que é infinitamente útil.

obrigado.

ps: como um bônus, a conclusão da guia que não funciona por ciclos também seria impressionante.

v.oddou
fonte
O que ctrl O faz que você deseja replicar? Mais informações nos sempre bom ...
Austin T Francês
Sim, editada a questão :)
v.oddou
2
Não acredito que esse recurso seja suportado. O PowerShell 3 tem um gancho chamado PSConsoleHostReadlineque pode ser útil. Um bom lugar para começar seria usar o PSReadLine , que usa esse gancho. O PSReadLine não suporta ctrl-o, mas suporta ctrl-r (supostamente - não funcionou para mim). Posso dar uma olhada na implementação do ctrl-o no Natal, porque parece útil.
dangph
2
Ah, PSReadLine, esta parece ser a minha resposta, você deve publicá-la como resposta. ele não tem Co, mas tem Cr, que é o mais importante. Ele também tem o ajuste de conclusão da guia que eu queria em bônus.
precisa saber é o seguinte
2
Autor do PSReadline aqui - @ v.oddou - Ctrl + K deve estar vinculado ao KillLine no modo Emacs. Ctrl + R deve funcionar com ou sem digitar algo primeiro. É um prazer adicionar Ctrl + O - sinta-se à vontade para abrir um problema no github.
Jason Shirk

Respostas:

15

Digite as primeiras letras do comando e pressione F8.

Como alternativa, você pode pressionar F7e digitar as primeiras letras.

Mais detalhes: http://technet.microsoft.com/en-us/magazine/ff678293.aspx

georgik
fonte
F7 não faz nada ...
Daniel K.
Você poderia fornecer mais informações? Pode ser que possa ser útil para outros. Qual versão do Powershell e qual versão do Windows? O PowerShell padrão é bastante limitado. É melhor usar MobaXterm ou ConEmuMaximus 5 para obter uma melhor UX
georgik
@CatBoss F7 trabalha em cmd
phuclv
11
@ LưuVĩnhPhúc então a resposta tem de dizer isso, porque a pergunta é sobre Powershell ....
Daniel K.
Veja a resposta abaixo - não perca seu tempo com o F8 se você estiver no PowerShell 5+ #
Nicholas DiPiazza
6

O WMF 5.0 RTM , que inclui o Windows PowerShell 5 , agora suporta o mesmo recurso de pesquisa de comando reverso do bash CTRL+R. Eu tenho usado isso no Windows 10 Anniversary Edition e meu memória muscular do bash está muito feliz.

Na verdade, o suporte vem do módulo PSReadLine do PowerShell, que eu vejo foi mencionado em alguns dos comentários da pergunta. O bom é que o PSReadLine agora parece estar incluído na instalação base do WMF 5.0 , pelo menos no Windows 10.

Se você estiver executando o PowerShell 3 ou posterior, também poderá instalar o PSReadLine e obter o recurso de pesquisa de histórico.

Nota: Eu não encontrei como começá-lo trabalhar no ISE como CTRL+Ré traçado a outra coisa (painel de scripts Show / Hide).

Lantrix
fonte
4

Para manipular seu histórico, você pode usar os cmdlets do histórico, liste-os por este comando:

Get-Command *-history

Pesquisando seu histórico é feito assim, sinta-se à vontade para criar uma função para encurtá-lo:

Get-history | Select-String "command"

function f ($Name) { Get-history | Select-String $name }
nohwnd
fonte