Udostępnij przez


PSReadLine (Linia PSReadLine)

Informacje o PSReadLine

KRÓTKI OPIS

PSReadLine zapewnia ulepszone środowisko edytowania wiersza polecenia w konsoli programu PowerShell.

DŁUGI OPIS

PSReadLine zapewnia zaawansowane środowisko edycji wiersza polecenia dla konsoli programu PowerShell. Zapewnia:

  • Kolorowanie składni wiersza polecenia
  • Wizualne wskazanie błędów składni
  • Lepsze środowisko wielowierszowe (zarówno edytowanie, jak i historia)
  • Dostosowywalne powiązania kluczy
  • Tryby Cmd i Emacs
  • Wiele opcji konfiguracji
  • Uzupełnianie stylu powłoki Bash (opcjonalne w trybie Cmd, ustawienie domyślne w trybie Emacs)
  • Pierścień szarpania/zabijania Emacsa
  • Ruch i zabijanie "słowa" oparte na tokenie programu PowerShell

Następujące funkcje są dostępne w klasie [Microsoft.PowerShell.PSConsoleReadLine].

Ruch kursora

Koniec linii

  • Cmd: <End>
  • Emacs: <End> lub <Ctrl+E>

Jeśli dane wejściowe mają wiele wierszy, przejdź na koniec bieżącego wiersza lub jeśli już na końcu wiersza, przejdź na koniec danych wejściowych. Jeśli dane wejściowe mają jeden wiersz, przejdź na koniec danych wejściowych.

PoczątekOfLine

  • Cmd: <Home>
  • Emacs: <Home> lub <Ctrl+A>

Jeśli dane wejściowe mają wiele wierszy, przejdź do początku bieżącego wiersza lub jeśli już na początku wiersza, przejdź do początku danych wejściowych. Jeśli dane wejściowe mają jeden wiersz, przejdź do początku danych wejściowych.

Następna linia

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Przesuń kursor do następnego wiersza, jeśli dane wejściowe mają wiele wierszy.

Poprzedni wiersz

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Przenieś kursor do poprzedniego wiersza, jeśli dane wejściowe mają wiele wierszy.

ForwardChar (Znak do przodu)

  • Cmd: <RightArrow>
  • Emacs: <RightArrow> lub <Ctrl+F>

Przenieś kursor jeden znak po prawej stronie. Może to spowodować przeniesienie kursora do następnego wiersza danych wejściowych wielowierszowych.

WsteczChar

  • Cmd: <LeftArrow>
  • Emacs: <LeftArrow> lub <Ctrl+B>

Przenieś kursor jeden znak po lewej stronie. Może to spowodować przeniesienie kursora do poprzedniego wiersza danych wejściowych wielowierszowych.

Kolejność przesyłania dalej

  • Cmd: bez ograniczeń
  • Emacs: <Alt+F>

Przesuń kursor do przodu na końcu bieżącego słowa lub , jeśli między wyrazami, na końcu następnego wyrazu. Znaki ogranicznika wyrazów można ustawić za pomocą:

Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`

Kolejność

  • Cmd: <Ctrl+RightArrow>
  • Emacs: bez ograniczeń

Przesuń kursor do przodu na początek następnego wyrazu. Znaki ogranicznika wyrazów można ustawić za pomocą:

Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`

Kolejność wstecz

  • Cmd: <Ctrl+LeftArrow>
  • Emacs: <Alt+B>

Przenieś kursor z powrotem na początek bieżącego wyrazu lub jeśli między wyrazami, początek poprzedniego wyrazu. Znaki ogranicznika wyrazów można ustawić za pomocą:

Set-PSReadLineOption -WordDelimiters `<string of delimiter characters>`

ShellForwardWord (Słowo Shell)

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Podobnie jak ForwardWord, z tą różnicą, że granice wyrazów są definiowane przez granice tokenu programu PowerShell.

PowłokaNastępny Słowo

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Podobnie jak NextWord, z tą różnicą, że granice wyrazów są definiowane przez granice tokenów programu PowerShell.

ShellBackwardWord (Słowo Powłoka)

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Podobnie jak BackwardWord, z tą różnicą, że granice wyrazów są definiowane przez granice tokenu programu PowerShell.

Nawias klamrowy GotoBrace

  • Cmd: <Ctrl+}>
  • Emacs: bez ograniczeń

Przejdź do pasującego nawiasu, nawiasu klamrowego lub nawiasu kwadratowego.

Dodaj linię

  • Cmd: <Shift-Enter>
  • Emacs: <Shift-Enter>

Monit kontynuacji jest wyświetlany w następnym wierszu, a funkcja PSReadLine czeka na edytowanie bieżących danych wejściowych przez klucze. Jest to przydatne do wprowadzania danych wejściowych w wielu wierszach jako pojedynczego polecenia nawet wtedy, gdy pojedynczy wiersz jest kompletnym wejściem.

Edytowanie podstawowe

Anuluj wiersz

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Anuluj wszystkie edycje do wiersza, pozostaw wiersz wejściowy na ekranie, ale wróć z PSReadLine bez wykonywania danych wejściowych.

Linia powrotna

  • Cmd: <ESC>
  • Emacs: <Alt+R>

Przywraca wszystkie dane wejściowe od czasu zaakceptowania i uruchomienia ostatnich danych wejściowych. Jest to równoznaczne z używaniem polecenia Cofnij, dopóki nie zostanie już nic do cofnięcia.

WsteczDeleteChar

  • Cmd: <Backspace>
  • Emacs: <Backspace> lub <Ctrl+H>

Usuń znak przed kursorem.

DeleteChar (DeleteChar)

  • Cmd: <Delete>
  • Emacs: <Delete>

Usuń znak pod kursorem.

DeleteCharOrExit (DeleteCharOrExit)

  • Cmd: bez ograniczeń
  • Emacs: <Ctrl+D>

Podobnie jak DeleteChar, chyba że wiersz jest pusty, w takim przypadku zakończ proces.

Linia akceptacji

  • Cmd: <Enter>
  • Emacs: <Enter> lub <Ctrl+M>

Spróbuj wykonać bieżące dane wejściowe. Jeśli bieżące dane wejściowe są niekompletne (na przykład brakuje nawiasu zamykającego, nawiasu kwadratowego lub cudzysłowu), monit o kontynuację jest wyświetlany w następnym wierszu, a program PSReadLine czeka na klucze, aby edytować bieżące dane wejściowe.

AcceptAndGetNext

  • Cmd: bez ograniczeń
  • Emacs: <Ctrl+O>

Podobnie jak AcceptLine, ale po zakończeniu wiersza rozpocznij edycję następnego wiersza z historii.

ValidateAndAcceptLine

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Podobnie jak AcceptLine, ale wykonuje dodatkową walidację, w tym:

  • Sprawdza, czy nie ma dodatkowych błędów analizy
  • Sprawdza, czy znaleziono wszystkie nazwy poleceń
  • Jeśli używasz programu PowerShell 4.0 lub nowszego, weryfikuje parametry i argumenty

Jeśli wystąpią jakiekolwiek błędy, komunikat o błędzie zostanie wyświetlony i nie zostanie zaakceptowany ani dodany do historii, chyba że poprawisz wiersz polecenia lub ponownie wykonasz polecenie AcceptLine lub ValidateAndAcceptLine, gdy komunikat o błędzie jest wyświetlany.

WsteczDeleteLine

  • Cmd: <Ctrl+Home>
  • Emacs: bez ograniczeń

Usuń tekst od początku danych wejściowych do kursora.

ForwardDeleteLine (Linia do przodu)

  • Cmd: <Ctrl+End>
  • Emacs: bez ograniczeń

Usuń tekst od kursora do końca danych wejściowych.

Wybierz pozycjęBackwardChar

  • Cmd: <Shift+LeftArrow>
  • Emacs: <Shift+LeftArrow>

Dostosuj bieżące zaznaczenie, aby uwzględnić poprzedni znak.

Wybierz pozycjęForwardChar

  • Cmd: <Shift+RightArrow>
  • Emacs: <Shift+RightArrow>

Dostosuj bieżące zaznaczenie, aby uwzględnić następny znak.

Wybierz pozycjęBackwardWord

  • Cmd: <Shift+Ctrl+LeftArrow>
  • Emacs: <Alt+Shift+B>

Dostosuj bieżące zaznaczenie, aby uwzględnić poprzednie słowo.

Wybierz pozycjęForwardWord

  • Cmd: bez ograniczeń
  • Emacs: <Alt+Shift+F>

Dostosuj bieżące zaznaczenie, aby uwzględnić następny wyraz przy użyciu elementu ForwardWord.

Wybierz pozycjęDalejWord

  • Cmd: <Shift+Ctrl+RightArrow>
  • Emacs: bez ograniczeń

Dostosuj bieżące zaznaczenie, aby uwzględnić następne słowo za pomocą NextWord.

Wybierz pozycjęShellForwardWord

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Dostosuj bieżące zaznaczenie, aby uwzględnić następny wyraz za pomocą polecenia ShellForwardWord.

Wybierz kolejno pozycjeShellDalejWord

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Dostosuj bieżące zaznaczenie, aby uwzględnić następny wyraz za pomocą polecenia ShellNextWord.

Wybierz pozycjęShellBackwardWord

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Dostosuj bieżące zaznaczenie, aby uwzględnić poprzednie słowo za pomocą polecenia ShellBackwardWord.

Wybierz pozycjęBackwardsLine

  • Cmd: <Shift+Home>
  • Emacs: <Shift+Home>

Dostosuj bieżące zaznaczenie, aby uwzględnić kursor na początku wiersza.

Wybierz linię

  • Cmd: <Shift+End>
  • Emacs: <Shift+End>

Dostosuj bieżące zaznaczenie, aby uwzględnić kursor na końcu wiersza.

Wybierzwszystkie

  • Cmd: <Ctrl+A>
  • Emacs: bez ograniczeń

Wybierz cały wiersz. Przesuwa kursor na koniec wiersza.

Samodzielna wstawka

  • Cmd: <a>, <b>, ...
  • Emacs: <a>, <b>, ...

Wprowadź wprowadzony klucz.

Powtórz

  • Cmd: <Ctrl+Y>
  • Emacs: bez ograniczeń

Ponów wstawienie lub usunięcie, które zostało cofnięte przez polecenie Cofnij.

Cofnąć

  • Cmd: <Ctrl+Z>
  • Emacs: <Ctrl+_>

Cofanie poprzedniego wstawiania lub usuwania.

Historia

Wyczyść historię

  • Cmd: <Alt+F7>
  • Emacs: bez ograniczeń

Czyści historię w programie PSReadLine. Nie ma to wpływu na historię programu PowerShell.

Poprzednihistory

  • Cmd: <UpArrow>
  • Emacs: <UpArrow> lub <Ctrl+P>

Zastąp bieżące dane wejściowe poprzednim elementem z historii PSReadLine.

NastępnyHistory

  • Cmd: <DownArrow>
  • Emacs: <DownArrow> lub <Ctrl+N>

Zastąp bieżące dane wejściowe następnym elementem z historii PSReadLine.

ForwardSearchHistory (Historia wyszukiwania)

  • Cmd: <Ctrl+S>
  • Emacs: <Ctrl+S>

Interaktywnie przeszukuj bieżący wiersz historii.

Odwróć historię wyszukiwania

  • Cmd: <Ctrl+R>
  • Emacs: <Ctrl+R>

Interaktywne wyszukiwanie wstecz od bieżącej linii historii.

HistoriaSearchBackward

  • Cmd: <F8>
  • Emacs: bez ograniczeń

Zastąp bieżące dane wejściowe poprzednim elementem z historii PSReadLine, który pasuje do znaków między początkiem a danymi wejściowymi i kursorem.

HistoriaSearchForward

  • Cmd: <Shift+F8>
  • Emacs: bez ograniczeń

Zastąp bieżące dane wejściowe następnym elementem z historii PSReadLine, który pasuje do znaków między początkiem a danymi wejściowymi i kursorem.

PoczątekOfHistory

  • Cmd: bez ograniczeń
  • Emacs: <Alt+<>

Zastąp bieżące dane wejściowe ostatnim elementem z historii PSReadLine.

Koniec historii

  • Cmd: bez ograniczeń
  • Emacs: <Alt+>>

Zastąp bieżące dane wejściowe ostatnim elementem w historii PSReadLine, który jest prawdopodobnie pustym wejściem, który został wprowadzony przed dowolnymi poleceniami historii.

Uzupełnianie karty

ZakładkaUkończonyNastępny

  • Cmd: <Tab>
  • Emacs: bez ograniczeń

Spróbuj ukończyć tekst wokół kursora z następnym dostępnym ukończeniem.

TabCompletePoprzedni

  • Cmd: <Shift-Tab>
  • Emacs: bez ograniczeń

Spróbuj uzupełnić tekst otaczający kursor następnym poprzednim uzupełnieniem.

Ukończ

  • Cmd: bez ograniczeń
  • Emacs: <Tab>

Spróbuj wykonać uzupełnianie tekstu otaczającego kursor. Jeśli istnieje wiele możliwych uzupełnień, najdłuższy jednoznaczny prefiks jest używany do ukończenia. Jeśli próbujesz ukończyć najdłuższe jednoznaczne ukończenie, zostanie wyświetlona lista możliwych ukończeń.

  • Cmd: <Ctrl+Space>
  • Emacs: <Ctrl+Space>

Spróbuj wykonać uzupełnianie tekstu otaczającego kursor. Jeśli istnieje wiele możliwych uzupełnień, zostanie wyświetlona lista możliwych uzupełnień i można wybrać poprawne uzupełnienie za pomocą strzałek lub Tab/Shift+Tab. Naciśnięcia Escape i Ctrl+G anulują wybór menu i przywracają wiersz do stanu sprzed wywołania funkcji MenuComplete.

Możliwe uzupełnianie

  • Cmd: bez ograniczeń
  • Emacs: <Alt+Equals>

Wyświetl listę możliwych uzupełnień.

Znacznik SetMark

  • Cmd: bez ograniczeń
  • Emacs: <Alt+Space>

Oznacz bieżącą lokalizację kursora do użycia w kolejnym poleceniu edycji.

ExchangePointAndMark (Punkt wymiany)

  • Cmd: bez ograniczeń
  • Emacs: <Ctrl+X,Ctrl+X>

Kursor jest umieszczany w lokalizacji znacznika, a znacznik jest przenoszony do lokalizacji kursora.

Zabić/szarpnąć

Kill i Yank działają na schowku w module PSReadLine. Istnieje bufor pierścieniowy zwany pierścieniem zabijania - tekst zabitych jest dodawany do pierścienia zabijania, a yank kopiuje tekst z ostatniego zabójstwa. YankPop przełącza się między przedmiotami w pierścieniu zabijania. Gdy pierścień zabijania jest pełny, nowe przedmioty zastępują najstarsze przedmioty. Operacja zabójstwa, która jest bezpośrednio poprzedzona inną operacją zabijania, dołącza poprzednie zabójstwo, zamiast dodawać nowy przedmiot lub zastępować przedmiot w pierścieniu zabijania. W ten sposób możesz przeciąć część linii, na przykład za pomocą wielu operacji KillWord, a następnie szarpnąć je z powrotem w innym miejscu jako jedno szarpnięcie.

Linia zabójstwa

  • Cmd: bez ograniczeń
  • Emacs: <Ctrl+K>

Wyczyść dane wejściowe od kursora do końca wiersza. Wyczyszczony tekst jest umieszczany w pierścieniu zabijania.

WsteczKillLine

  • Cmd: bez ograniczeń
  • Emacs: <Ctrl+U> lub <Ctrl+X,Backspace>

Wyczyść dane wejściowe od początku danych wejściowych do kursora. Wyczyszczony tekst jest umieszczany w pierścieniu zabijania.

Zabić Słowo

  • Cmd: bez ograniczeń
  • Emacs: <Alt+D>

Wyczyść dane wejściowe z kursora na końcu bieżącego wyrazu. Jeśli kursor znajduje się między wyrazami, dane wejściowe są czyszczone z kursora na końcu następnego wyrazu. Wyczyszczony tekst jest umieszczany w pierścieniu zabijania.

WsteczKillWord

  • Cmd: bez ograniczeń
  • Emacs: <Alt+Backspace>

Wyczyść dane wejściowe od początku bieżącego słowa do kursora. Jeśli kursor znajduje się między wyrazami, dane wejściowe są czyszczone od początku poprzedniego wyrazu do kursora. Wyczyszczony tekst jest umieszczany w pierścieniu zabijania.

Słowo ShellKillWord

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Podobnie jak KillWord, z tą różnicą, że granice wyrazów są definiowane przez granice tokenów programu PowerShell.

ShellBackwardKillWord (Słowo PowłokaZabój Wsteczne)

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Podobnie jak BackwardKillWord, z tą różnicą, że granice wyrazów są definiowane przez granice tokenów programu PowerShell.

UnixWordRubout

  • Cmd: bez ograniczeń
  • Emacs: <Ctrl+W>

Podobnie jak BackwardKillWord, z tą różnicą, że granice słów są definiowane przez białe znaki.

Region zabicia

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Zabij tekst między kursorem a znacznikem.

Kopiuj

  • Cmd: <Ctrl+Shift+C>
  • Emacs: bez ograniczeń

Skopiuj wybrany region do schowka systemowego. Jeśli nie wybrano żadnego regionu, skopiuj cały wiersz.

CopyOrCancelLine

  • Cmd: <Ctrl+C>
  • Emacs: <Ctrl+C>

Skopiuj zaznaczony tekst do schowka lub, jeśli żaden tekst nie jest zaznaczony, anuluj edycję wiersza za pomocą opcji Anuluj wiersz.

Cięcie

  • Cmd: <Ctrl+X>
  • Emacs: bez ograniczeń

Usuń zaznaczony region, umieszczając usunięty tekst w schowku systemowym.

Yank

  • Cmd: bez ograniczeń
  • Emacs: <Ctrl+Y>

Dodaj ostatnio zabity tekst do danych wejściowych.

YankPop (YankPop)

  • Cmd: bez ograniczeń
  • Emacs: <Alt+Y>

Jeśli poprzednią operacją był Yank lub YankPop, zastąp poprzednio szarpnięty tekst następnym zabitym tekstem z pierścienia zabijania.

Wyczyść pierścień KillRing

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Zawartość pierścienia zabijania zostanie usunięta.

Wklej

  • Cmd: <Ctrl+V>
  • Emacs: bez ograniczeń

Jest to podobne do Yanke, ale używa schowka systemowego zamiast pierścienia zabijania.

[! WAŻNE]

W przypadku korzystania z funkcji Paste cała zawartość buforu schowka jest wklejona do buforu wejściowego elementu PSReadLine. Bufor wejściowy jest następnie przekazywany do analizatora programu PowerShell. Dane wejściowe wklejone przy użyciu metody wklejania prawym przyciskiem myszy aplikacji konsolowej są kopiowane do buforu wejściowego o jeden znak jednocześnie. Bufor wejściowy jest przekazywany do analizatora po skopiowaniu nowego znaku wiersza. W związku z tym dane wejściowe są analizowane po jednym wierszu naraz. Różnica między metodami wklejania powoduje różne zachowanie wykonywania.

YankLastArg powiedział:

  • Cmd: <Alt+.>
  • Emacs: <Alt+.>, <Alt+_>

Wstaw ostatni argument z poprzedniego polecenia w historii. Powtarzające się operacje zastępują ostatni wstawiony argument ostatnim argumentem z poprzedniego polecenia (czyli Alt+. Kombinacja Alt+. wstawi ostatni argument przedostatniego wiersza historii).

W przypadku argumentu po raz pierwszy YankLastArg zachowuje się jak YankNthArg. Negatywny argument przy kolejnych wywołaniach YankLastArg zmienia kierunek podczas przechodzenia przez historię. Na przykład, jeśli naciśniesz Alt+. o jeden raz za dużo możesz wpisać Alt+- Alt+. , aby odwrócić kierunek.

Argumenty są oparte na tokenach programu PowerShell.

YankNthArg powiedział:

  • Cmd: bez ograniczeń
  • Emacs: <Alt+Ctrl+Y>

Wstaw pierwszy argument (nie nazwę polecenia) poprzedniego polecenia w historii.

Z argumentem wstaw n-ty argument, gdzie 0 jest zwykle poleceniem. Negatywne kłótnie zaczynają się od końca.

Argumenty są oparte na tokenach programu PowerShell.

Różne

Anuluj

  • Cmd: bez ograniczeń
  • Emacs: <Ctrl+G>

Przerwij bieżącą akcję; Na przykład zatrzymaj interaktywne wyszukiwanie historii. Nie anuluje danych wejściowych, takich jak CancelLine.

Wyszukiwanie znaków

  • Cmd: <F3>
  • Emacs: <Ctrl+]>

Odczytaj klucz i wyszukaj ten znak w przyszłości. Z argumentem szukaj n-tego wystąpienia tego argumentu. Z argumentem ujemnym wyszukuje wstecz.

CharacterSearchBackward (Wyszukiwanie postaciWstecz)

  • Cmd: <Shift+F3>
  • Emacs: <Alt+Ctrl+]>

Podobnie jak CharacterSearch, ale przeszukuje wstecz. Z argumentem ujemnym wyszukuje do przodu.

Wyczyść ekran

  • Cmd: <Ctrl+L>
  • Emacs: <Ctrl+L>

Czyści ekran i wyświetla bieżący monit i dane wejściowe u góry ekranu.

Argument cyfrowy

  • Cmd: bez ograniczeń
  • Emacs: <Alt+[0..9]>,<any char>,<Alt+->

Służy do przekazywania argumentów numerycznych do funkcji takich jak CharacterSearch lub YankNthArg. Alt+- przełącza argument na ujemny/nieujemny. Aby wprowadzić 80 znaków "*", możesz wpisać Alt+8 Alt+0 *.

Zrzut ekranu

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Kopiuje zaznaczone wiersze do schowka zarówno w formacie tekstowym, jak i RTF. Użyj strzałek w górę/w dół do pierwszego wiersza, aby wybrać, a następnie Shift+Strzałka w górę/Shift+Strzałka w dół, aby zaznaczyć wiele linii. Po wybraniu naciśnij Enter, aby skopiować tekst. Escape/Ctrl+C/Ctrl+G anuluje operację, więc nic nie jest kopiowane do schowka.

InvokePrompt

  • Cmd: bez ograniczeń
  • Emacs: bez ograniczeń

Usuwa bieżący monit i wywołuje funkcję monitu w celu ponownego redysponowania monitu. Przydatne w przypadku niestandardowych programów obsługi kluczy, które zmieniają stan, na przykład zmieniając bieżący katalog.

Co jest kluczem

  • Cmd: <Alt+?>
  • Emacs: <Alt+?>

Odczytaj lub akord i wyświetl powiązanie.

ShowKeyBindings (Pokazywanie powiązań)

  • Cmd: <Ctrl+Alt+?>
  • Emacs: <Ctrl+Alt+?>

Pokazuje wszystkie aktualnie powiązane klucze.

ScrollDisplayUp (PrzewińWyświetlaczGóra)

  • Cmd: <PageUp>
  • Emacs: <PageUp>

Przewiń ekran w górę.

ScrollDisplayUpLine (PrzewijanieWyświetlaczWiersz)

  • Cmd: <Ctrl+PageUp>
  • Emacs: <Ctrl+PageUp>

Przewiń ekran w górę o jeden wiersz.

PrzewińWyświetlaczDół

  • Cmd: <PageDown>
  • Emacs: <PageDown>

Przewiń ekran w dół o jeden ekran.

ScrollDisplayDownLine (PrzewijanieWyświetlacz w dół)

  • Cmd: <Ctrl+PageDown>
  • Emacs: <Ctrl+PageDown>

Przewiń ekran w dół o jeden wiersz.

ScrollDisplayGóra

  • Cmd: bez ograniczeń
  • Emacs: <Ctrl+Home>

Przewiń ekran do góry.

ScrollDisplayToCursor (PrzewijanieWyświetlaczDokursora)

  • Cmd: bez ograniczeń
  • Emacs: <Ctrl+End>

Przewiń ekran do kursora.

Powiązania kluczy niestandardowych

PSReadLine obsługuje niestandardowe powiązania przy użyciu polecenia cmdlet Set-PSReadLineKeyHandler. Większość niestandardowych powiązań wywołuje jedną z powyższych funkcji, na przykład

Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward

Możesz powiązać element ScriptBlock z kluczem. ScriptBlock może zrobić prawie wszystko, co chcesz. Oto kilka przydatnych przykładów:

  • edytowanie wiersza polecenia
  • otwarcie nowego okna (np. Pomoc)
  • zmienianie katalogów bez zmieniania wiersza polecenia

Funkcja ScriptBlock otrzymuje dwa argumenty:

  • $key — obiekt [ConsoleKeyInfo] kluczem, który wyzwolił powiązanie niestandardowe. Jeśli powiążesz ten sam ScriptBlock z wieloma kluczami i musisz wykonać różne akcje w zależności od klucza, możesz sprawdzić $key. Wiele powiązań niestandardowych ignoruje ten argument.

  • $arg — dowolny argument. Najczęściej jest to argument całkowity, który użytkownik przekazuje z powiązań kluczy DigitArgument. Jeśli powiązanie nie akceptuje argumentów, warto zignorować ten argument.

Przyjrzyjmy się przykładowi, który dodaje wiersz polecenia do historii bez jego wykonywania. Jest to przydatne, gdy zdajesz sobie sprawę, że nie pamiętasz czegoś zrobić, ale nie chcesz ponownie wprowadzać wprowadzonego wiersza polecenia.

$parameters = @{
    Key = 'Alt+w'
    BriefDescription = 'SaveInHistory'
    LongDescription = 'Save current line in history but do not execute'
    ScriptBlock = {
      param($key, $arg)   # The arguments are ignored in this example

      # GetBufferState gives us the command line (with the cursor position)
      $line = $null
      $cursor = $null
      [Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line,
        [ref]$cursor)

      # AddToHistory saves the line in history, but does not execute it.
      [Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)

      # RevertLine is like pressing Escape.
      [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
  }
}
Set-PSReadLineKeyHandler @parameters

Przykłady można zobaczyć o wiele więcej w pliku SamplePSReadLineProfile.ps1 , który jest zainstalowany w folderze modułu PSReadLine.

Większość powiązań kluczy używa niektórych funkcji pomocnika do edytowania wiersza polecenia. Te interfejsy API są udokumentowane w następnej sekcji.

Interfejsy API obsługi powiązań kluczy niestandardowych

Następujące funkcje są publiczne w programie Microsoft.PowerShell.PSConsoleReadLine, ale nie można ich bezpośrednio powiązać z kluczem. Większość z tych elementów jest przydatna w powiązaniach kluczy niestandardowych.

void AddToHistory(string command)

Dodaj wiersz polecenia do historii bez jego wykonywania.

void ClearKillRing()

Wyczyść pierścień zabijania. Jest to najczęściej używane do testowania.

void Delete(int start, int length)

Usuń znaki długości od początku. Ta operacja obsługuje cofanie/ponowne wykonanie.

void Ding()

Wykonaj akcję Ding w oparciu o preferencje użytkownika.

void GetBufferState([ref] string input, [ref] int cursor)
void GetBufferState([ref] Ast ast, [ref] Token[] tokens,
  [ref] ParseError[] parseErrors, [ref] int cursor)

Te dwie funkcje pobierają przydatne informacje o bieżącym stanie buforu wejściowego. Pierwszy jest częściej używany w prostych przypadkach. Drugi jest używany, jeśli powiązanie wykonuje coś bardziej zaawansowanego za pomocą narzędzia Ast.

IEnumerable[Microsoft.PowerShell.KeyHandler]
  GetKeyHandlers(bool includeBound, bool includeUnbound)

Ta funkcja jest używana przez Get-PSReadLineKeyHandler i prawdopodobnie nie jest przydatna w niestandardowym powiązaniu.

Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()

Ta funkcja jest używana przez polecenie Get-PSReadLineOption i prawdopodobnie nie jest zbyt przydatna w powiązaniu klucza niestandardowego.

void GetSelectionState([ref] int start, [ref] int length)

Jeśli w wierszu polecenia nie ma zaznaczenia, -1 zostaną zwrócone zarówno w początku, jak i długości. Jeśli w wierszu polecenia znajduje się zaznaczenie, zwracany jest początek i długość zaznaczenia.

void Insert(char c)
void Insert(string s)

Wstaw znak lub ciąg na kursorze. Ta operacja obsługuje cofanie/ponowne wykonanie.

string ReadLine(runspace remoteRunspace,
  System.Management.Automation.EngineIntrinsics engineIntrinsics)

Jest to główny punkt wejścia do elementu PSReadLine. Nie obsługuje rekursji, więc nie jest przydatna w niestandardowym powiązaniu.

void RemoveKeyHandler(string[] key)

Ta funkcja jest używana przez program Remove-PSReadLineKeyHandler i prawdopodobnie nie jest zbyt przydatna w powiązaniu klucza niestandardowego.

void Replace(int start, int length, string replacement)

Zastąp część danych wejściowych. Ta operacja obsługuje cofanie/ponowne wykonanie. Jest to preferowane w stosunku do polecenia Usuń, a następnie Wstaw, ponieważ jest traktowane jako pojedyncza akcja cofania.

void SetCursorPosition(int cursor)

Przenieś kursor do danego przesunięcia. Ruch kursora nie jest śledzony w celu cofnięcia.

void SetOptions(Microsoft.PowerShell.SetPSReadLineOption options)

Ta funkcja jest metodą pomocnika używaną przez polecenie cmdlet Set-PSReadLineOption, ale może być przydatna w przypadku niestandardowego powiązania, które chce tymczasowo zmienić ustawienie.

bool TryGetArgAsInt(System.Object arg, [ref] int numericArg,
  int defaultNumericArg)

Ta metoda pomocnika jest używana w przypadku powiązań niestandardowych, które honoruje funkcję DigitArgument. Typowe wywołanie wygląda następująco:

[int]$numericArg = 0
[Microsoft.PowerShell.PSConsoleReadLine]::TryGetArgAsInt($arg,
  [ref]$numericArg, 1)

NUTA

ZGODNOŚĆ Z PROGRAMEM POWERSHELL

PSReadLine wymaga programu PowerShell 3.0 lub nowszego oraz hosta konsoli. Nie działa w programie PowerShell ISE. Działa w konsoli Visual Studio Code.

HISTORIA POLECEŃ

PSReadLine przechowuje plik historii zawierający wszystkie polecenia i dane wprowadzone w wierszu polecenia. Może to zawierać poufne dane, w tym hasła. Jeśli na przykład używasz ConvertTo-SecureString polecenia cmdlet, hasło jest rejestrowane w pliku historii jako zwykły tekst. Plik historii to plik o nazwie $($host.Name)_history.txt. W systemach Windows plik historii jest przechowywany w $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine.

OPINIE I WKŁAD W PSReadLine

PSReadLine w witrynie GitHub

Możesz przesłać żądanie ściągnięcia lub przesłać opinię na stronie usługi GitHub.

ZOBACZ TEŻ

Element PSReadLine jest silnie pod wpływem biblioteki gnu readline.