Powershell równoważny Ctrl + R?

13

W bashu mogę zrobić Ctrl+ Ri zacząć wpisywać polecenie, aby przeszukało moją historię.

Jak to zrobić w PowerShell?

Czy istnieje sposób na powiązanie klucza z czymś takim?

function GH($str) {get-history | select-string $str}

Ale musiałbym ponownie odczytać ciąg dla każdego wejścia char lub usunąć, aby uzyskać wyjściowe polecenia takie jak Ctrl+ R.

czy to możliwe?

czerwony888
źródło

Odpowiedzi:

11

Możesz to naprawić, przyjmując moduł PSReadLine .

Zobacz artykuł o Hej Skrypciarze! blog dotyczący tej inspirowanej bash implementacji readline dla PowerShell.

W szczególności użycie Ctrl+ Alt+ ( Shift) +? aby wyświetlić wszystkie skróty klawiszowe.

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.0.10240.16384
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.42000
BuildVersion                   10.0.10240.16384
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3

Ctrl+R

PS C:\> Get-Module -ListAvailable
bck-i-search: mo_

Ctrl+ Alt+ ( Shift) +S

Key                  Function                 Description
---                  --------                 -----------
Ctrl+r               ReverseSearchHistory     Search history backwards interactively
Ctrl+s               ForwardSearchHistory     Search history forward interactively

W skrócie: albo zainstaluj ten moduł ręcznie, albo uaktualnij do Windows PowerShell v5.

MM
źródło
5

Wpisz wyszukiwane hasło, a następnie naciśnij klawisz F8, spowoduje to przeszukanie historii poleceń.

Jest to bardzo przydatna lista skrótów PowerShell tutaj .

Sam Cogan
źródło
Próbowałeś tego sam? To nigdy tak naprawdę nie działało dla mnie lub tylko w połowie czasu. Na przykład wpisuję kilka poleceń get- <cokolwiek>. Następnie wpisz get- <F8> i cyklicznie przełącza tylko jedno lub dwa losowe polecenia z mojej historii? Nie wiem, co do cholery robi. Na przykład właśnie wpisałem get-childitem i uruchomiłem go, a następnie natychmiast po wpisaniu get-c <f8> i nic nie dostaję. Może moja sesja się popsuła?
red888,
Pracuje dla mnie 100% czasu, to jest z zainstalowanym WMF 5
Sam Cogan
5

Nie wiem, kiedy to zostało dodane, ale na moim niestandardowym, zaktualizowanym systemie Windows 10 jest on wbudowany. Naciśnij ctrl + r, aby przeszukać historię wstecz, działa świetnie.

wprowadź opis zdjęcia tutaj

skrebbel
źródło
Pracuję również nad Win10. Ctrl + R działa w programie PowerShell, ale nie działa w oknie cmd.
dudu
Jasne, ale dlaczego miałbyś używać cmd.exe?
Raúl Salinas-Monteagudo
0

Istnieje również wyszukiwanie graficzne pod klawiszem F7. Po naciśnięciu wyświetli wyskakujące okienko, które można przewinąć, aby wyszukać polecenie, które zostało wykonane wcześniej. Naciśnięcie klawisza Enter podczas zatrzymania kursora spowoduje ponowne wykonanie go przez linię.

termil0r
źródło
0

Możesz także uruchomić polecenie, umieszczając znak # przed częściowym tekstem szukanego polecenia, a następnie naciśnij stuknij później (wiele razy, jeśli to konieczne), aby przeszukać historię sesji.

Tolga
źródło