Uwielbiam Powershell, ale wywodząc się z Linuksa, jest kilka rzeczy, które naprawdę mnie denerwują. Na przykład jak działa domyślne automatyczne uzupełnianie.
Na przykład: Get-PS rozwija się do „Get-PSBreakpoint”, który jest pierwszym pasującym poleceniem. W bash, jeśli istnieje tylko jedno polecenie pasujące bash rozwinie się do pasującego polecenia. Jeśli jest kilka kart trafienia raz, nic nie robi, karta podwójnego stuknięcia wyświetli listę pasujących poleceń, ale nie rozwija się. Czy istnieje sposób, aby Powershell zachowywał się w ten sposób?
I jeszcze jedno, jeśli napisałem jedną linię i przesunęłem znacznik z powrotem do wcześniejszego polecenia (znacznik jest tam, gdzie jest ^):
„Get-PSS ^ | Remove-PSSession” automatycznie kończy się na „Get-PSSession ^”, usuwając wszystkie końcowe polecenia. W bash końcowe polecenia pozostałyby bez zmian. Czy istnieje sposób, aby program PowerShell nie usuwał końcowych poleceń podczas automatycznego uzupełniania?
Premią byłoby zdobycie CTRL + L w celu wyczyszczenia ekranu. CTRL + A, aby przejść na początek linii, a CTRL + E, aby przejść na koniec linii.
źródło
Odpowiedzi:
Sprawdź PSReadline .
Z artykułu:
Używam tego codziennie!
źródło
Set-PSReadlineKeyHandler -Key Tab -Function Complete
CompleteMenu
zamiastComplete
bardziejMoże powinieneś rzucić okiem na Powertab , konfigurowalne rozszerzenie karty PowerShell.
źródło
cześć Peter, po prostu naciśnij klawisz F8, aby uzyskać coś takiego jak speedsearch. Uzupełnia je wcześniej uruchomione polecenia, które zaczynają się od tego, co masz w linii. Problem z usunięciem końca jest denerwujący, piszę sugestię w Connect dotyczącą tego samego problemu. W głównej chwili możesz użyć Powershell ISE, które zachowują się nieco lepiej (nie usuwaj końcowych znaków).
źródło
Stary podsystem Command.exe jest nadal zaangażowany w PowerShell i wymusza wiele nieprzyjemnych zachowań. Jednak od wersji PowerShell v3 GUI (PowerShell ISE) jest teraz użyteczny i zawiera znacznie bardziej nowoczesne wykończenie + koloryzację.
źródło
PowerShell używa tych samych funkcji konsoli, co czcigodny wiersz polecenia; więc masz zwykły Home / End i:
... ale o ile mi wiadomo, nie ma możliwości pokazania wszystkich możliwych uzupełnień.
źródło
Zwykły PowerShell używa cmd jako okna wiersza polecenia. Dlatego ma ogromne dziedzictwo (programy od wieków polegają na zachowaniu starego cmd), którego nie można zmienić z powodu wstecznej porównywalności.
Polecam użyć powershell_ise zamiast PowerShell (to obejmuje w standardzie PowerShell wiązki). Wersja 3.0 (nie jestem pewien co do poprzedniej wersji) obsługuje Intellisense od samego początku. Jest to bardzo zbliżone do stylu zakończenia bashu. Po prostu naciśnij Ctrl + Spacja zamiast Tab. Mam problemy z niestandardowymi uzupełnieniami na PowerTab, ale Intellisense działa z tym dobrze. Powershell_ise zachowuje również końcowe polecenia, ma normalny tryb zaznaczania, obsługuje Ctrl + C, Ctrl + V, Ctrl + A dla zaznaczonego wprowadzonego polecenia, więc Ctrl + A, przejdź do początku linii, Ctrl + A, do końca (lub Home /Koniec).
źródło
PowerShell używa własnego parsera dla poleceń, więc w pewnym sensie jest to inna powłoka niż cmd.exe, nawet jeśli mają ten sam terminal (okno GUI).
Z powodu tej różnicy PowerShell pozwala zastąpić funkcję uzupełniania tabulatorów własną funkcją. Sam nie miałem czasu, aby z tym zadzierać, ale w zasadzie zastępujesz funkcję
tabexpansion
w swoim profilu, tak samo jak możesz zastąpićprompt
funkcję.Znalazłem ten artykuł autorstwa Lee Holmesa (autora niesamowitej książki kucharskiej Windows PowerShell ), który opisuje zastąpienie rozszerzenia tabulacji, które jest bardzo podobne do tego, czego szukasz. Prawdopodobnie możesz go ulepszyć, aby uzyskać dokładnie to, czego chcesz.
źródło