PowerShell w myślach czyta?

PowerShell-Czyta-W-MyslachO module PSReadLine pisałem już na tym blogu w przeszłości. Gwoli przypomnienia: to właśnie ten moduł jest odpowiedzialny za skróty klawiszowe, kolorowanie składni, przechowywanie historii (i udostępnienia jej za pomocą skrótu klawiszowego CTRL+R) i wiele, wiele innych. Od ostatniej wersji domyślnie włączona jest też funkcja, która sprawia, że PowerShell zaczyna przewidywać wasze myśli a w jednym przypadku – podsuwać gotowe rozwiązania. Mowa o dostępnej od wersji 2.1 (a od wersji 2.2.6 domyślnie włączonej) opcji “PredictionSource”.

Najpierw przyjrzyjmy się opcji dostępnej zarówno dla użytkowników Windows PowerShell 5.1, jak i dla osób korzystających z PowerShell 7.1+, czyli podpowiedzi wykorzystujących historię poleceń. Włączyć ją możemy korzystając z polecenia ustawiającego opcje PSReadLine (Set-PSReadLineOption):

PSReadLine-Ustawiamy-Zrodlo-Podpowiedzi

Jak wspomniałem, w PSReadLine 2.2.6 opcja ta domyślnie będzie ustawiona na History w “tradycyjnym” PowerShellu, a na HistoryAndPlugin w wersjach 7.1 i nowszych. W obu przypadkach będziemy mieli dostęp do naszej historii poleceń. Jeśli zaczniemy pisać nowe polecenie, to PowerShell zacznie podsuwać podobne polecenia wykonywane w przeszłości:

PSReadLine-Podpowiedz-InLine

Jeśli podpowiedź nam odpowiada – wystarczy wcisnąć prawą “strzałkę” na naszej klawiaturze. Jest też opcja by włączyć dopełnianie pojedynczych słów:

Set-PSReadLineKeyHandler -Chord ctrl+f -Function ForwardWord
view raw ForwardWord.ps1 hosted with ❤ by GitHub

Inna opcja, którą warto rozważyć, to lista podpowiedzi, z których możemy wybrać tę, która najbardziej nam odpowiada. Możemy przełączyć się między trybami przy pomocy polecenia, ale możemy też skorzystać z klawisza F2 (jeśli nie przypisaliśmy mu sami innej akcji):

Set-PSReadLineOPtion -PredictionViewStyle ListView
view raw ListView.ps1 hosted with ❤ by GitHub

Niezależnie od tego, jaką drogę wybierzemy by tu dotrzeć, na wyjściu uzyskamy listę podpowiedzi, z których wybierać możemy za pomocą strzałek góra – dół:

PSeadLine-ListView-Wybor-Podpowiedzi

Jeśli wybrana opcja nam odpowiada – możemy wcisnąć spację (kontynuując edycję) bądź enter (od razu wykonując wybrane polecenie).

Warto wspomnieć, że zarówno podpowiedzi “w linii”, jak i podpowiedzi “z listy” możemy spersonalizować, dobierając inny zestaw kolorów niż domyślny:

# InLine:
Set-PSReadLineOption -Colors @{ InlinePrediction = "$([char]0x1b)[36;7;238m"}
# ListView, kolorowanie źródła i "strzałki" na wejściu:
Set-PSReadLineOption -Colors @{ ListPrediction = "$([char]0x1b)[33;7;238m"}
# ListView, kolorowanie wybranej opcji
Set-PSReadLineOption -Colors @{ ListPredictionSelected = "$([char]0x1b)[36;7;238m"}

Efekt obu zabiegów – na załączonym obrazkach. Dla opcji InLine:

PSReadLine-Kolorwanie-InLine

I dla opcji ListView:

PSReadLine-Kolorwanie-ListView

Na koniec – wisienka na torcie: w PowerShell 7.1+ możemy skorzystać z możliwości tworzenia własnych podpowiedzi. Przykładem takich podpowiedzi jest oferowany przez Azure zestaw podpowiedzi do ich poleceń w ramach modułu Az.Tools.Predictors. Po zainstalowaniu uzyskamy podpowiedzi nawet w przypadku poleceń, których nigdy nie mieliśmy okazji użyć:

PSReadLine-Uzycie-AZ-Predictor

Oczywiście, nie omieszkam spróbować podobne podpowiedzi stworzyć we własnym zakresie. Póki co, zachęcam do tego, by własnej historii poleceń zacząć używać nieco inaczej, niż do tej pory. Winking smile

~ - autor: Bartek Bielawski w dniu 13 lipca, 2022.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s

 
%d blogerów lubi to: