Equivalente di Ctrl-r di bash in PowerShell


19

qualcuno conosce un modo per avere la funzionalità di ricerca dei comandi all'indietro di bash [Ctrl-r](e [Ctrl-o]) che sono così utili in Windows PowerShell?

C-rè una più potente arrow upmanipolazione della storia, è come quella di emacs C-rin quanto cerca indietro all'interno dei comandi che hai precedentemente inserito. Quindi C-oesegue quel comando e posiziona immediatamente sulla riga il comando successivo. In modo da poter ripetere in modo efficiente le serie passate di comandi. Inoltre cerca una cronologia salvata, non una cronologia di sessioni. ( ~/.bash_historyfile). Che è infinitamente utile.

Grazie.

ps: come bonus il completamento della scheda che non funziona a cicli sarebbe anche bello.


Cosa fa ctrl O che vuoi replicare? Più informazioni ci sempre bene ...
Austin T, francese,

Sì,
ho

2
Non credo che questa funzione sia supportata. PowerShell 3 ha un hook chiamato PSConsoleHostReadlineche potrebbe essere utile. Un buon punto di partenza sarebbe usare PSReadLine , che usa quell'hook . PSReadLine non supporta ctrl-o, ma supporta ctrl-r (presumibilmente - non ha funzionato per me). Potrei dare un'occhiata all'implementazione di ctrl-o a Natale perché sembra utile.
dangph,

2
Ah, PSReadLine, questa sembra la mia risposta, dovresti pubblicarla come risposta. non ha Co ma ha Cr che è il più importante. Ha anche la modifica del completamento delle schede che volevo in bonus.
v.

2
PS Leggi qui l'autore - @ v.oddou - Ctrl + K dovrebbe essere associato a KillLine in modalità Emacs. Ctrl + R dovrebbe funzionare senza digitare prima qualcosa. Sono felice di aggiungere Ctrl + O - sentiti libero di aprire un problema su Github.
Jason Shirk,

Risposte:


15

Digitare le prime lettere del comando e premere F8.

In alternativa puoi premere F7e digitare le prime lettere.

Maggiori dettagli: http://technet.microsoft.com/en-us/magazine/ff678293.aspx


F7 non fa nulla ...
Daniel K.

Potresti fornire maggiori informazioni? Potrebbe essere utile per gli altri. Quale versione di Powershell e quale versione di Windows? Il Powershell predefinito è piuttosto limitato. È meglio usare MobaXterm o ConEmuMaximus 5 per migliorare UX
georgik

@CatBoss F7 funziona in cmd
phuclv

1
@ LưuVĩnhPhúc, quindi la risposta deve dirlo, perché la domanda riguarda Powershell ....
Daniel K.

Vedi la risposta qui sotto - non perdere tempo con F8 se usi PowerShell 5+
Nicholas DiPiazza,

6

WMF 5.0 RTM , che include Windows PowerShell 5 , ora supporta la stessa funzione di ricerca dei comandi inversi di bash CTRL+R. Ho usato questo in Windows 10 Anniversary Edition e la mia memoria muscolare bash è molto felice.

Il supporto in realtà proviene dal modulo PowerShell PSReadLine che vedo è stato menzionato in alcuni dei commenti della domanda. La cosa buona è che PSReadLine ora sembra essere incluso nell'installazione di base di WMF 5.0 , almeno su Windows 10.

Se stai utilizzando PowerShell 3 o versioni successive, puoi anche installare PSReadLine e ottenere la funzione di ricerca della cronologia.

Nota: non ho scoperto come farlo funzionare in ISE come CTRL+Rè mappato a qualcos'altro (Mostra / Nascondi riquadro script).


4

Per manipolare la cronologia è possibile utilizzare i cmdlet di cronologia, elencarli con questo comando:

Get-Command *-history

La ricerca della cronologia viene eseguita in questo modo, sentiti libero di creare una funzione per accorciarla:

Get-history | Select-String "command"

function f ($Name) { Get-history | Select-String $name }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.