Entspricht Bashs Strg-R in PowerShell

19

kennt jemand eine möglichkeit, die in Windows Powershell so nützliche befehlssuchfunktion von bash [Ctrl-r](und [Ctrl-o]) zu verwenden?

C-rist eine leistungsstärkere arrow upManipulation für die Historie. Sie ähnelt der von Emacs, C-rda sie in den zuvor eingegebenen Befehlen rückwärts sucht. Dann C-oführt diesen Befehl und sofort legt auf der Linie den nächsten Befehl danach. Damit können Sie übergebene Befehlsfolgen effizient wiederholen. Außerdem wird ein gespeicherter Verlauf angezeigt, kein Sitzungsverlauf. ( ~/.bash_historyDatei). Welches ist unendlich nützlich.

Vielen Dank.

ps: als bonus wäre auch die tab-vervollständigung furchtbar, die nicht durch zyklen funktioniert.

v.oddou
quelle
Was macht Strg + O, das Sie replizieren möchten? Mehr Infos uns immer gut ...
Austin T Französisch
Ja, habe die Frage bearbeitet :)
v.oddou
2
Ich glaube nicht, dass diese Funktion unterstützt wird. PowerShell 3 hat einen Hook namens PSConsoleHostReadline, der nützlich sein könnte. Ein guter Anfang wäre die Verwendung von PSReadLine , das diesen Hook verwendet. PSReadLine unterstützt Strg-O nicht, aber Strg-R (angeblich - es hat bei mir nicht funktioniert). Ich kann mir über Weihnachten die Implementierung von Strg-O ansehen, da dies nützlich klingt.
dangph
2
Ah, PSReadLine, das scheint meine Antwort zu sein, du solltest es als Antwort posten. es hat kein Co, aber es hat Cr, was am wichtigsten ist. Es hat auch den Tab-Abschluss-Tweak, den ich als Bonus haben wollte.
v.oddou
2
PSReadline-Autor hier - @ v.oddou - Strg + K sollte im Emacs-Modus an KillLine gebunden sein. Strg + R sollte funktionieren, ohne dass zuerst etwas eingegeben wird. Ich freue mich, Strg + O hinzuzufügen - zögern Sie nicht, eine Ausgabe auf Github zu eröffnen.
Jason Shirk

Antworten:

15

Geben Sie die ersten Buchstaben des Befehls ein und drücken Sie F8.

Alternativ können Sie auch die F7ersten Buchstaben drücken und eingeben.

Weitere Details: http://technet.microsoft.com/en-us/magazine/ff678293.aspx

Georgik
quelle
F7 macht nichts ...
Daniel K.
Können Sie uns weitere Informationen geben? Vielleicht könnte es für andere nützlich sein. Welche Version von Powershell und welche Windows-Version? Die Standard-PowerShell ist sehr begrenzt. Es ist besser, MobaXterm oder ConEmuMaximus 5 zu verwenden, um UX zu
verbessern
@CatBoss F7 funktioniert in cmd
phuclv
1
@ LưuVĩnhPhúc dann muss die Antwort so lauten, denn die Frage handelt von Powershell ....
Daniel K.
Siehe die Antwort unten - Verschwenden Sie Ihre Zeit nicht mit F8, wenn Sie auf PowerShell 5+ sind
Nicholas DiPiazza
6

WMF 5.0 RTM , zu dem Windows PowerShell 5 gehört , unterstützt jetzt die gleiche Funktion für die Umkehrbefehlssuche wie Bash CTRL+R. Ich habe dies in Windows 10 Anniversary Edition verwendet und mein Bash-Muskel-Gedächtnis ist sehr glücklich.

Die Unterstützung kommt tatsächlich vom PowerShell-Modul PSReadLine, das in einigen Kommentaren der Frage erwähnt wurde. Das Gute ist, dass PSReadLine jetzt in der WMF 5.0- Basisinstallation enthalten zu sein scheint , zumindest unter Windows 10.

Wenn Sie PowerShell 3 oder höher ausführen , können Sie auch PSReadLine installieren und die Verlaufssuchfunktion erhalten.

Hinweis: Ich habe nicht herausgefunden, wie dies in ISE funktioniert, da CTRL+Res auf etwas anderes abgebildet ist (Skriptbereich einblenden / ausblenden).

Lantrix
quelle
4

Um Ihren Verlauf zu bearbeiten, können Sie die Verlaufs-Cmdlets verwenden und sie mit folgendem Befehl auflisten:

Get-Command *-history

Das Durchsuchen Ihres Verlaufs geschieht folgendermaßen. Sie können auch eine Funktion zum Verkürzen des Verlaufs erstellen:

Get-history | Select-String "command"

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