about_PSReadLine
Краткое описание
PSReadLine предоставляет улучшенный интерфейс редактирования командной строки в консоли PowerShell.
Полное описание
PSReadLine 2.0 предоставляет мощный интерфейс редактирования командной строки для консоли PowerShell. Консоль предоставляет следующие возможности:
- Цвет синтаксиса командной строки
- Визуальное указание синтаксических ошибок
- Улучшенное многострочное взаимодействие (как редактирование, так и журнал)
- Настраиваемые привязки ключей
- Режимы Cmd и Emacs
- Множество параметров конфигурации
- Завершение стиля Bash (необязательно в режиме Cmd, по умолчанию в режиме Emacs)
- Emacs yank/kill-ring
- Перемещение и удаление слов на основе токена PowerShell
Для PSReadLine требуется PowerShell 3.0 или более поздней версии. PSReadLine работает с узлом консоли по умолчанию, Visual Studio Code и терминалом Windows. Она не работает в интегрированной среде сценариев PowerShell.
PSReadLine 2.1.0 поставляется с PowerShell 7.2 и поддерживается во всех поддерживаемых версиях PowerShell. Его можно установить из коллекция PowerShell. Чтобы установить PSReadLine 2.1.0 в поддерживаемой версии PowerShell, выполните следующую команду.
Install-Module -Name PSReadLine -RequiredVersion 2.1.0
Примечание
Начиная с PowerShell 7.0, PowerShell пропускает автоматическую загрузку PSReadLine в Windows, если обнаружена программа чтения с экрана. В настоящее время PSReadLine не работает с средствами чтения с экрана. Отрисовка и форматирование PowerShell 7.0 по умолчанию работают правильно. При необходимости модуль можно загрузить вручную.
В классе Microsoft.PowerShell.PSConsoleReadLine доступны следующие функции.
Основные функции редактирования
Прерывание
Прервать текущее действие, например добавочный поиск в журнале.
- Emacs:
<Ctrl+g>
AcceptAndGetNext
Попытка выполнения текущих входных данных. Если его можно выполнить (например, AcceptLine), то при следующем вызове ReadLine следует отозвать следующий элемент из журнала.
- Emacs:
<Ctrl+o>
AcceptLine
Попытка выполнения текущих входных данных. Если текущий вход не завершен (например, отсутствует закрывающая скобка, скобка или кавычка), запрос продолжения отображается в следующей строке, а PSReadLine ожидает, пока ключи изменятся.
- Команда:
<Enter>
- Emacs:
<Enter>
- Режим вставки vi:
<Enter>
AddLine
Запрос на продолжение отображается в следующей строке, и PSReadLine ожидает, пока ключи изменятся для текущих входных данных. Это полезно для ввода многострочных входных данных в качестве одной команды, даже если одна строка является полной.
- Команда:
<Shift+Enter>
- Emacs:
<Shift+Enter>
- Режим вставки vi:
<Shift+Enter>
- Режим команды Vi:
<Shift+Enter>
НазадDeleteChar
Удалите символ перед курсором.
- Cmd:
<Backspace>
,<Ctrl+h>
- Emacs:
<Backspace>
,<Ctrl+Backspace>
,<Ctrl+h>
- Режим вставки vi:
<Backspace>
- Режим команды Vi:
<X>
,<d,h>
НазадDeleteLine
Like BackwardKillLine — удаляет текст от точки до начала строки, но не помещает удаленный текст в круг завершения.
- Команда:
<Ctrl+Home>
- Режим вставки vi:
<Ctrl+u>
,<Ctrl+Home>
- Режим команды Vi:
<Ctrl+u>
,<Ctrl+Home>
,<d,0>
BackwardDeleteWord
Удаляет предыдущее слово.
- Режим команды Vi:
<Ctrl+w>
,<d,b>
BackwardKillLine
Очистите входные данные от начала ввода до курсора. Очищенный текст помещается в кольцо завершения.
- Emacs:
<Ctrl+u>
,<Ctrl+x,Backspace>
BackwardKillWord
Очистите входные данные от начала текущего слова до курсора. Если курсор находится между словами, входные данные очищаются от начала предыдущего слова до курсора. Очищенный текст помещается в кольцо завершения.
- Cmd:
<Ctrl+Backspace>
,<Ctrl+w>
- Emacs:
<Alt+Backspace>
,<Escape,Backspace>
- Режим вставки vi:
<Ctrl+Backspace>
- Режим команды Vi:
<Ctrl+Backspace>
CancelLine
Отмените текущие входные данные, оставив их на экране, но вернитесь обратно на узел, чтобы запрос снова вычислился.
- Режим вставки vi:
<Ctrl+c>
- Режим команды Vi:
<Ctrl+c>
Копировать
Скопируйте выбранный регион в системный буфер обмена. Если регион не выбран, скопируйте всю строку.
- Команда:
<Ctrl+C>
CopyOrCancelLine
Если выбран текст, скопируйте его в буфер обмена, в противном случае отмените строку.
- Команда:
<Ctrl+c>
- Emacs:
<Ctrl+c>
Вырезать
Удалить выбранный регион, где удаленный текст будет размещен в системном буфере обмена.
- Команда:
<Ctrl+x>
DeleteChar
Удалите символ под курсором.
- Команда:
<Delete>
- Emacs:
<Delete>
- Режим вставки vi:
<Delete>
- Режим команд Vi:
<Delete>
,<x>
,<d,l>
,<d,Spacebar>
DeleteCharOrExit
Удалите символ под курсором или, если строка пуста, закройте процесс.
- Emacs:
<Ctrl+d>
DeleteEndOfBuffer
Удаляет до конца многострокового буфера.
- Режим команды Vi:
<d,G>
DeleteEndOfWord
Удалить до конца слова.
- Режим команды Vi:
<d,e>
DeleteLine
Удаляет текущую логическую строку многострочных буферов, включив отмену.
- Режим команды Vi:
<d,d>
,<d,_>
DeletePreviousLines
Удаляет предыдущие запрошенные логические строки и текущую логическую строку в многострочном буфере.
- Режим команды Vi:
<d,k>
DeleteRelativeLines
Удаляет из начала буфера в текущую логическую строку в многострочном буфере.
Как и большинство команд Vi, <d,g,g>
команда может быть добавлена в начало числовым аргументом, указывающим абсолютный номер строки, который вместе с текущим номером строки составляет диапазон удаляемых строк.
Если значение не указано, числовой аргумент по умолчанию имеет значение 1, которое ссылается на первую логическую строку в многострочном буфере.
Фактическое число строк, удаляемых из многострочного, вычисляется как разница между текущим номером логической строки и указанным числовым аргументом, что может быть отрицательным. Следовательно, относительная часть имени метода.
- Режим команды Vi:
<d,g,g>
DeleteNextLines
Удаляет текущую логическую строку и следующие запрошенные логические строки в многострочном буфере.
- Режим команды Vi:
<d,j>
DeleteLineToFirstChar
Удаляет текст из курсора до первого непустого символа строки.
- Режим команды Vi:
<d,^>
DeleteToEnd
Удалить до конца строки.
- Режим команды Vi:
<D>
,<d,$>
DeleteWord
Удалите следующее слово.
- Режим команды Vi:
<d,w>
ForwardDeleteLine
Например, ForwardKillLine — удаляет текст от точки до конца строки, но не помещает удаленный текст в круг завершения.
- Команда:
<Ctrl+End>
- Режим вставки vi:
<Ctrl+End>
- Режим команды Vi:
<Ctrl+End>
InsertLineAbove
Новая пустая строка создается над текущей строкой независимо от того, где курсор находится в текущей строке. Курсор перемещается в начало новой строки.
- Команда:
<Ctrl+Enter>
InsertLineBelow
Новая пустая строка создается под текущей строкой независимо от того, где курсор находится в текущей строке. Курсор перемещается в начало новой строки.
- Команда:
<Shift+Ctrl+Enter>
Инверт.
Переверните регистр текущего символа и перейдите к следующему.
- Режим команды Vi:
<~>
KillLine
Очистите входные данные от курсора до конца входных данных. Очищенный текст помещается в кольцо завершения.
- Emacs:
<Ctrl+k>
KillRegion
Завершите текст между курсором и меткой.
- Функция не связана.
KillWord
Очистите входные данные от курсора до конца текущего слова. Если курсор находится между словами, входные данные очищаются от курсора до конца следующего слова. Очищенный текст помещается в кольцо завершения.
- Cmd:
<Alt+d>
,<Ctrl+Delete>
- Emacs:
<Alt+d>
,<Escape,d>
- Режим вставки vi:
<Ctrl+Delete>
- Режим команды Vi:
<Ctrl+Delete>
Вставить
Вставьте текст из системного буфера обмена.
- Cmd:
<Ctrl+v>
,<Shift+Insert>
- Режим вставки vi:
<Ctrl+v>
- Режим команды Vi:
<Ctrl+v>
Важно!
При использовании функции Paste все содержимое буфера буфера обмена вставляется во входной буфер PSReadLine. Затем входной буфер передается в средство синтаксического анализа PowerShell. Входные данные, вставленные с помощью метода вставки правой кнопкой мыши консольного приложения, копируются во входной буфер по одному символу за раз. Входной буфер передается в средство синтаксического анализа при копировании символа новой строки. Таким образом, входные данные анализируются по одной строке за раз. Разница между методами вставки приводит к разному поведению выполнения.
Вставить После
Вставьте буфер обмена после курсора, переместив курсор в конец вставленного текста.
- Режим команды Vi:
<p>
PasteBefore
Вставьте буфер обмена перед курсором, переместив курсор в конец вставленного текста.
- Режим команды Vi:
<P>
PrependAndAccept
Добавьте символ "#" и примите строку.
- Режим команды Vi:
<#>
Повторить
Отмена отмены.
- Команда:
<Ctrl+y>
- Режим вставки vi:
<Ctrl+y>
- Режим команды Vi:
<Ctrl+y>
RepeatLastCommand
Повторите последнее изменение текста.
- Режим команды Vi:
<.>
RevertLine
Возвращает все входные данные к текущему входу.
- Команда:
<Escape>
- Emacs:
<Alt+r>
,<Escape,r>
ShellBackwardKillWord
Очистите входные данные от начала текущего слова до курсора. Если курсор находится между словами, входные данные очищаются от начала предыдущего слова до курсора. Очищенный текст помещается в кольцо завершения.
Функция не связана.
ShellKillWord
Очистите входные данные от курсора до конца текущего слова. Если курсор находится между словами, входные данные очищаются от курсора до конца следующего слова. Очищенный текст помещается в кольцо завершения.
Функция не связана.
Буферные символы
Поменяйте текущий символ и символ перед ним.
- Emacs:
<Ctrl+t>
- Режим вставки vi:
<Ctrl+t>
- Режим команды Vi:
<Ctrl+t>
Отменить
Отмена предыдущего изменения.
- Команда:
<Ctrl+z>
- Emacs:
<Ctrl+_>
,<Ctrl+x,Ctrl+u>
- Режим вставки vi:
<Ctrl+z>
- Режим команды Vi:
<Ctrl+z>
,<u>
Отменить Все
Отмените все предыдущие изменения строки.
- Режим команды Vi:
<U>
UnixWordRubout
Очистите входные данные от начала текущего слова до курсора. Если курсор находится между словами, входные данные очищаются от начала предыдущего слова до курсора. Очищенный текст помещается в кольцо завершения.
- Emacs:
<Ctrl+w>
ValidateAndAcceptLine
Попытка выполнения текущих входных данных. Если текущий вход не завершен (например, отсутствует закрывающая скобка, скобка или кавычка), запрос продолжения отображается в следующей строке, а PSReadLine ожидает, пока ключи изменятся.
- Emacs:
<Ctrl+m>
ViAcceptLine
Примите строку и переключитесь в режим вставки.
- Режим команды Vi:
<Enter>
ViAcceptLineOrExit
Аналогично DeleteCharOrExit в режиме Emacs, но принимает строку вместо удаления символа.
- Режим вставки vi:
<Ctrl+d>
- Режим команды Vi:
<Ctrl+d>
ViAppendLine
Под текущей строкой вставляется новая строка.
- Режим команды Vi:
<o>
ViBackwardDeleteGlob
Удаляет предыдущее слово, используя в качестве разделителя слова только пробелы.
- Режим команды Vi:
<d,B>
ViBackwardGlob
Перемещает курсор обратно в начало предыдущего слова, используя в качестве разделителей только пробелы.
- Режим команды Vi:
<B>
ViDeleteBrace
Найдите соответствующую фигурную скобку, круглые скобки или квадратную скобку и удалите все содержимое внутри, включая фигурную скобку.
- Режим команды Vi:
<d,%>
ViDeleteEndOfGlob
Удалить до конца слова.
- Режим команды Vi:
<d,E>
ViDeleteGlob
Удалите следующую маску (слово с разделителями пробелами).
- Режим команды Vi:
<d,W>
ViDeleteToBeforeChar
Удаляет до заданного символа.
- Режим команды Vi:
<d,t>
ViDeleteToBeforeCharBackward
Удаляет до заданного символа.
- Режим команды Vi:
<d,T>
ViDeleteToChar
Удаляет до заданного символа.
- Режим команды Vi:
<d,f>
ViDeleteToCharBackward
Удаляет назад до заданного символа.
- Режим команды Vi:
<d,F>
ViInsertAtBegining
Переключитесь в режим вставки и расположите курсор в начале строки.
- Режим команды Vi:
<I>
ViInsertAtEnd
Переключитесь в режим вставки и поместите курсор в конце строки.
- Режим команды Vi:
<A>
ViInsertLine
Над текущей строкой вставляется новая строка.
- Режим команды Vi:
<O>
ViInsertWithAppend
Добавление из текущей позиции строки.
- Режим команды Vi:
<a>
ViInsertWithDelete
Удалите текущий символ и переключитесь в режим вставки.
- Режим команды Vi:
<s>
ViJoinLines
Соединяет текущую и следующую строку.
- Режим команды Vi:
<J>
ViReplaceLine
Удалите всю командную строку.
- Режим команды Vi:
<S>
,<c,c>
ViReplaceToBeforeChar
Заменяет до заданного символа.
- Режим команды Vi:
<c,t>
ViReplaceToBeforeCharBackward
Заменяет до заданного символа.
- Режим команды Vi:
<c,T>
ViReplaceToChar
Удаляет до заданного символа.
- Режим команды Vi:
<c,f>
ViReplaceToCharBackward
Заменяет до заданного символа.
- Режим команды Vi:
<c,F>
ViYankBeginningOfLine
Yank от начала буфера до курсора.
- Режим команды Vi:
<y,0>
ViYankEndOfGlob
Yk от курсора до конца СЛОВ.
- Режим команды Vi:
<y,E>
ViYankEndOfWord
Yank от курсора до конца слов.
- Режим команды Vi:
<y,e>
ViYankLeft
Символы Yank слева от курсора.
- Режим команды Vi:
<y,h>
ViYankLine
Yank весь буфер.
- Режим команды Vi:
<y,y>
ViYankNextGlob
Переход от курсора к началу следующих слов.
- Режим команды Vi:
<y,W>
ViYankNextWord
Yk слова после курсора.
- Режим команды Vi:
<y,w>
ViYankPercent
Yank to/from matching скобки.
- Режим команды Vi:
<y,%>
ViYankPreviousGlob
Yank от начала word(s) до курсора.
- Режим команды Vi:
<y,B>
ViYankPreviousWord
Yk слова перед курсором.
- Режим команды Vi:
<y,b>
ViYankRight
Символы Yank под курсором и справа от курсора.
- Режим команды Vi:
<y,l>
,<y,Spacebar>
ViYankToEndOfLine
Yank от курсора до конца буфера.
- Режим команды Vi:
<y,$>
ViYankToFirstChar
Yank от первого символа, не являющегося пробелом, до курсора.
- Режим команды Vi:
<y,^>
Янки
Добавьте последний убитый текст во входные данные.
- Emacs:
<Ctrl+y>
YankLastArg
Yank последний аргумент из предыдущей строки журнала. При первом вызове аргумента ведет себя так же, как YankNthArg. Если вызывается несколько раз, вместо этого он выполняет итерацию по журналу, а аргумент задает направление (отрицательное указывает обратное направление).
- Команда:
<Alt+.>
- Emacs:
<Alt+.>
,<Alt+_>
,<Escape,.>
,<Escape,_>
YankNthArg
Yank первый аргумент (после команды) из предыдущей строки журнала. С аргументом yank аргумент n (начиная с 0), если аргумент является отрицательным, начните с последнего аргумента.
- Emacs:
<Ctrl+Alt+y>
,<Escape,Ctrl+y>
YankPop
Если предыдущая операция была Yank или YankPop, замените предыдущий фрагмент текста следующим убитым текстом из круга завершения.
- Emacs:
<Alt+y>
,<Escape,y>
Функции перемещения курсора
НазадChar
Переместите курсор на один символ влево. Это может привести к перемещению курсора в предыдущую строку многострочного ввода.
- Команда:
<LeftArrow>
- Emacs:
<LeftArrow>
,<Ctrl+b>
- Режим вставки vi:
<LeftArrow>
- Режим команды Vi:
<LeftArrow>
,<Backspace>
,<h>
НазадWord
Переместите курсор обратно в начало текущего слова или, если между словами, в начало предыдущего слова. Word границы определяются настраиваемым набором символов.
- Команда:
<Ctrl+LeftArrow>
- Emacs:
<Alt+b>
,<Escape,b>
- Режим вставки vi:
<Ctrl+LeftArrow>
- Режим команды Vi:
<Ctrl+LeftArrow>
Символы, определяющие границы слов, настраиваются в свойстве WordDelimiters объекта PSConsoleReadLineOptions . Сведения о просмотре или изменении свойства WordDelimiters см. в разделах Get-PSReadLineOption и Set-PSReadLineOption.
BeginningOfLine
Если вход содержит несколько строк, перейдите к началу текущей строки или, если уже в начале строки, перейдите к началу ввода. Если входные данные имеют одну строку, перейдите к началу ввода.
- Команда:
<Home>
- Emacs:
<Home>
,<Ctrl+a>
- Режим вставки vi:
<Home>
- Режим команды Vi:
<Home>
EndOfLine
Если вход содержит несколько строк, перейдите в конец текущей строки или, если она уже находится в конце строки, перейдите в конец входных данных. Если входные данные имеют одну строку, перейдите к концу входных данных.
- Команда:
<End>
- Emacs:
<End>
,<Ctrl+e>
- Режим вставки vi:
<End>
ForwardChar
Переместите курсор на один символ вправо. Это может привести к перемещению курсора в следующую строку многострочного ввода.
- Команда:
<RightArrow>
- Emacs:
<RightArrow>
,<Ctrl+f>
- Режим вставки vi:
<RightArrow>
- Режим команды Vi:
<RightArrow>
,<Space>
,<l>
ForwardWord
Перемещение курсора вперед в конец текущего слова или, если между словами, в конец следующего слова. Word границы определяются настраиваемым набором символов.
- Emacs:
<Alt+f>
,<Escape,f>
Символы, определяющие границы слов, настраиваются в свойстве WordDelimiters объекта PSConsoleReadLineOptions . Сведения о просмотре или изменении свойства WordDelimiters см. в разделах Get-PSReadLineOption и Set-PSReadLineOption.
GotoBrace
Перейдите к соответствующей фигурной скобке, скобке или квадратной скобке.
- Команда:
<Ctrl+]>
- Режим вставки vi:
<Ctrl+]>
- Режим команд Vi:
<Ctrl+]>
GotoColumn
Перейти к столбцу, указанному аргументом arg.
- Режим команд Vi:
<|>
GotoFirstNonBlankOfLine
Переместите курсор на первый непустой символ в строке.
- Режим команды Vi:
<^>
,<_>
MoveToEndOfLine
Перемещение курсора в конец входных данных.
- Режим команды Vi:
<End>
,<$>
Следующая линия
Переместите курсор на следующую строку.
- Функция не связана с ней.
NextWord
Переместите курсор вперед в начало следующего слова. Word границы определяются настраиваемым набором символов.
- Команда:
<Ctrl+RightArrow>
- Режим вставки Vi:
<Ctrl+RightArrow>
- Режим команд Vi:
<Ctrl+RightArrow>
Символы, определяющие границы слов, настраиваются в свойстве WordDelimiters объекта PSConsoleReadLineOptions . Сведения о просмотре или изменении свойства WordDelimiters см. в разделах Get-PSReadLineOption и Set-PSReadLineOption.
NextWordEnd
Перемещение курсора вперед в конец текущего слова или, если между словами, в конец следующего слова. Word границы определяются настраиваемым набором символов.
- Режим команд Vi:
<e>
Символы, определяющие границы слов, настраиваются в свойстве WordDelimiters объекта PSConsoleReadLineOptions . Сведения о просмотре или изменении свойства WordDelimiters см. в разделах Get-PSReadLineOption и Set-PSReadLineOption.
Предыдущая строка
Перемещение курсора в предыдущую строку.
- Функция не связана с ней.
ShellBackwardWord
Переместите курсор обратно в начало текущего слова или, если между словами, в начало предыдущего слова. Word границы определяются маркерами PowerShell.
- Функция не связана с ней.
ShellForwardWord
Переместите курсор вперед в начало следующего слова. Word границы определяются маркерами PowerShell.
- Функция не связана с ней.
ShellNextWord
Перемещение курсора вперед в конец текущего слова или, если между словами, в конец следующего слова. Word границы определяются маркерами PowerShell.
- Функция не связана с ней.
ViBackwardChar
Переместите курсор на один символ влево в режиме редактирования Vi. Это может привести к перемещению курсора в предыдущую строку многострочного ввода.
- Режим вставки Vi:
<LeftArrow>
- Режим команды Vi:
<LeftArrow>
,<Backspace>
,<h>
ViBackwardWord
Переместите курсор обратно в начало текущего слова или, если между словами, в начало предыдущего слова. Word границы определяются настраиваемым набором символов.
- Режим команд Vi:
<b>
Символы, определяющие границы слов, настраиваются в свойстве WordDelimiters объекта PSConsoleReadLineOptions . Сведения о просмотре или изменении свойства WordDelimiters см. в разделах Get-PSReadLineOption и Set-PSReadLineOption.
ViForwardChar
Переместите курсор на один символ вправо в режиме редактирования Vi. Это может привести к перемещению курсора в следующую строку многострочного ввода.
- Режим вставки Vi:
<RightArrow>
- Режим команды Vi:
<RightArrow>
,<Spacebar>
,<l>
ViEndOfGlob
Перемещает курсор в конец слова, используя в качестве разделителей только пробелы.
- Режим команд Vi:
<E>
ViEndOfPreviousGlob
Перемещается в конец предыдущего слова, используя только пробелы в качестве разделителя слов.
- Функция не связана с ней.
ViGotoBrace
Похож на GotoBrace, но основан на символах, а не на маркерах.
- Режим команд Vi:
<%>
ViNextGlob
Переходит к следующему слову, используя только пробелы в качестве разделителя слов.
- Режим команд Vi:
<W>
ViNextWord
Переместите курсор вперед в начало следующего слова. Word границы определяются настраиваемым набором символов.
- Режим команд Vi:
<w>
Символы, определяющие границы слов, настраиваются в свойстве WordDelimiters объекта PSConsoleReadLineOptions . Сведения о просмотре или изменении свойства WordDelimiters см. в разделах Get-PSReadLineOption и Set-PSReadLineOption.
Функции журнала
BeginningOfHistory
Переход к первому элементу в журнале.
- Emacs:
<Alt+<>
ClearHistory
Очищает журнал в PSReadLine. Это не влияет на журнал PowerShell.
- Команда:
<Alt+F7>
EndOfHistory
Переход к последнему элементу (текущему входу) в журнале.
- Emacs:
<Alt+>>
ForwardSearchHistory
Выполнение добавочного прямого поиска по журналу.
- Команда:
<Ctrl+s>
- Emacs:
<Ctrl+s>
HistorySearchBackward
Замените текущие входные данные элементом "previous" из журнала PSReadLine, который соответствует символам между начальным и входным вводом и курсором.
- Команда:
<F8>
HistorySearchForward
Замените текущие входные данные элементом "next" из журнала PSReadLine, который соответствует символам между начальным и входным вводом и курсором.
- Команда:
<Shift+F8>
NextHistory
Замените текущие входные данные элементом next из журнала PSReadLine.
- Команда:
<DownArrow>
- Emacs:
<DownArrow>
,<Ctrl+n>
- Режим вставки vi:
<DownArrow>
- Режим команды Vi:
<DownArrow>
,<j>
,<+>
PreviousHistory
Замените текущие входные данные элементом previous из журнала PSReadLine.
- Команда:
<UpArrow>
- Emacs:
<UpArrow>
,<Ctrl+p>
- Режим вставки vi:
<UpArrow>
- Режим команды Vi:
<UpArrow>
,<k>
,<->
ReverseSearchHistory
Выполните добавочный поиск в обратном направлении по журналу.
- Команда:
<Ctrl+r>
- Emacs:
<Ctrl+r>
ViSearchHistoryBackward
Запрашивает строку поиска и инициирует поиск после AcceptLine.
- Режим вставки vi:
<Ctrl+r>
- Режим команды Vi:
</>
,<Ctrl+r>
Функции завершения
Завершить
Попробуйте выполнить завершение текста, окружающего курсор. При наличии нескольких возможных завершений для завершения используется самый длинный однозначный префикс. При попытке выполнить самое длинное однозначное завершение отображается список возможных завершений.
- Emacs:
<Tab>
MenuComplete
Попробуйте выполнить завершение текста, окружающего курсор. При наличии нескольких возможных завершений для завершения используется самый длинный однозначный префикс. При попытке выполнить самое длинное однозначное завершение отображается список возможных завершений.
- Cmd:
<Ctrl+@>
,<Ctrl+Spacebar>
- Emacs:
<Ctrl+Spacebar>
Возможные завершения
Отображение списка возможных завершений.
- Emacs:
<Alt+=>
- Режим вставки vi:
<Ctrl+Spacebar>
- Режим команды Vi:
<Ctrl+Spacebar>
TabCompleteNext
Попытайтесь завершить текст вокруг курсора следующим доступным завершением.
- Команда:
<Tab>
- Режим команды Vi:
<Tab>
TabCompletePrevious
Попытайтесь завершить текст, окружающий курсор, с помощью предыдущего доступного завершения.
- Команда:
<Shift+Tab>
- Режим команды Vi:
<Shift+Tab>
ViTabCompleteNext
При необходимости завершает текущую группу редактирования и вызывает tabCompleteNext.
- Режим вставки vi:
<Tab>
ViTabCompletePrevious
При необходимости завершает текущую группу редактирования и вызывает tabCompletePrevious.
- Режим вставки vi:
<Shift+Tab>
Прочие функции
AcceptNextSuggestionWord
Примите следующее слово встроенного или выбранного предложения.
- Функция не связана.
AcceptSuggestion
Примите текущее встроенное или выбранное предложение.
- Функция не связана.
CaptureScreen
Запустите интерактивный снимок экрана: стрелки вверх и вниз выбирают линии, введите копии выделенного текста в буфер обмена в виде текста и HTML.
- Функция не связана.
ClearScreen
Очистите экран и нарисуйте текущую линию в верхней части экрана.
- Команда:
<Ctrl+l>
- Emacs:
<Ctrl+l>
- Режим вставки vi:
<Ctrl+l>
- Режим команды Vi:
<Ctrl+l>
DigitArgument
Запустите новый аргумент digit для передачи другим функциям. Его можно использовать в качестве множителя для следующей функции, вызываемой нажатием клавиши. Например, при нажатии <Alt+1>
<Alt+0>
задается значение аргумента digit равным 10. Затем нажатие клавиши #
отправляет 10 #
символов (##########
) во входную строку.
Аналогичным образом его можно использовать с другими операциями, такими как <Delete>
или Left-Arrow
.
- Cmd:
<Alt+0>
, ,<Alt+1>
,<Alt+3>
<Alt+2>
,<Alt+4>
,<Alt+5>
,<Alt+6>
,<Alt+7>
,<Alt+8>
,<Alt+9>
,<Alt+->
- Emacs:
<Alt+0>
, ,<Alt+1>
,<Alt+3>
<Alt+2>
,<Alt+4>
,<Alt+5>
<Alt+6>
,<Alt+7>
, ,<Alt+8>
,<Alt+9>
,<Alt+->
- Режим команды Vi:
<0>
,<1>
,<2>
,<3>
,<4>
<5>
, ,<6>
,<7>
,<8>
,<9>
InvokePrompt
Удаляет текущий запрос и вызывает функцию запроса для повторного отображения запроса. Полезно для пользовательских обработчиков ключей, изменяющих состояние. Например, измените текущий каталог.
- Функция не связана.
ScrollDisplayDown
Прокрутите экран вниз на один экран.
- Команда:
<PageDown>
- Emacs:
<PageDown>
ScrollDisplayDownLine
Прокрутите экран вниз на одну строку.
- Команда:
<Ctrl+PageDown>
- Emacs:
<Ctrl+PageDown>
ScrollDisplayToCursor
Прокрутите экран до курсора.
- Emacs:
<Ctrl+End>
ScrollDisplayTop
Прокрутите экран до верхней части экрана.
- Emacs:
<Ctrl+Home>
ScrollDisplayUp
Прокрутите экран вверх на один экран.
- Команда:
<PageUp>
- Emacs:
<PageUp>
ScrollDisplayUpLine
Прокрутите экран вверх на одну строку.
- Команда:
<Ctrl+PageUp>
- Emacs:
<Ctrl+PageUp>
SelfInsert
Вставьте ключ.
- Функция не связана с ней.
ShowKeyBindings
Показать все привязанные ключи.
- Команда:
<Ctrl+Alt+?>
- Emacs:
<Ctrl+Alt+?>
- Режим вставки Vi:
<Ctrl+Alt+?>
ViCommandMode
Переключите текущий режим работы с Vi-Insert на Vi-Command.
- Режим вставки Vi:
<Escape>
ViDigitArgumentInChord
Запуск нового аргумента цифры для передачи другим функциям в одном из аккордов vi.
- Функция не связана с ней.
ViEditVisually
Измените командную строку в текстовом редакторе, заданном параметром $env:EDITOR или $env:VISUAL.
- Emacs:
<Ctrl+x,Ctrl+e>
- Режим команд Vi:
<v>
ViExit
Выходит из оболочки.
- Функция не связана с ней.
ViInsertMode
Переключитесь в режим вставки.
- Режим команд Vi:
<i>
WhatIsKey
Прочтите ключ и сообщите, к чему он привязан.
- Команда:
<Alt+?>
- Emacs:
<Alt+?>
Функции выделения
ExchangePointAndMark
Курсор помещается в расположение метки, а метка перемещается в расположение курсора.
- Emacs:
<Ctrl+x,Ctrl+x>
SelectAll
Выделите всю строку.
- Команда:
<Ctrl+a>
SelectBackwardChar
Измените текущий выделенный фрагмент, чтобы включить предыдущий символ.
- Команда:
<Shift+LeftArrow>
- Emacs:
<Shift+LeftArrow>
SelectBackwardsLine
Измените текущее выделение для включения из курсора в начало строки.
- Команда:
<Shift+Home>
- Emacs:
<Shift+Home>
SelectBackwardWord
Измените текущий выделенный фрагмент, чтобы включить предыдущее слово.
- Команда:
<Shift+Ctrl+LeftArrow>
- Emacs:
<Alt+B>
SelectForwardChar
Измените текущий выделенный фрагмент, чтобы включить следующий символ.
- Команда:
<Shift+RightArrow>
- Emacs:
<Shift+RightArrow>
SelectForwardWord
Измените текущее выделение, чтобы включить следующее слово с помощью ForwardWord.
- Emacs:
<Alt+F>
SelectLine
Измените текущий выделенный фрагмент для включения от курсора до конца строки.
- Команда:
<Shift+End>
- Emacs:
<Shift+End>
ВыберитеДалеесле
Измените текущий выделенный фрагмент, чтобы включить следующее слово.
- Команда:
<Shift+Ctrl+RightArrow>
SelectShellBackwardWord
Измените текущее выделение, чтобы включить предыдущее слово с помощью ShellBackwardWord.
- Функция не связана с ней.
SelectShellForwardWord
Измените текущее выделение, чтобы включить следующее слово с помощью ShellForwardWord.
- Функция не связана с ней.
SelectShellNextWord
Измените текущее выделение, чтобы включить следующее слово с помощью оболочкиNextWord.
- Функция не связана с ней.
SetMark
Отметьте текущее расположение курсора для использования в последующей команде редактирования.
- Emacs:
<Ctrl+@>
Прогнозные функции IntelliSense
Примечание
Для использования этих функций необходимо включить прогнозную технологию IntelliSense.
AcceptNextWordSuggestion
Принимает следующее слово встроенного предложения из прогнозного intelliSense. Эту функцию можно привязать с помощью клавиш CTRL+F , выполнив следующую команду.
Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord
AcceptSuggestion
Принимает текущее встроенное предложение прогнозной intelliSense, нажимая клавишу RightArrow , когда курсор находится в конце текущей строки.
функции Поиск
CharacterSearch
Чтение символа и поиск следующего вхождения этого символа. Если аргумент указан, выполните поиск вперед (или назад, если отрицательное значение) для n-го вхождения.
- Команда:
<F3>
- Emacs:
<Ctrl+]>
- Режим вставки Vi:
<F3>
- Режим команд Vi:
<F3>
CharacterSearchBackward
Чтение символа и поиск следующего вхождения этого символа в обратном направлении. Если аргумент указан, выполните поиск в обратном направлении (или вперед, если отрицательное значение) для n-го вхождения.
- Команда:
<Shift+F3>
- Emacs:
<Ctrl+Alt+]>
- Режим вставки Vi:
<Shift+F3>
- Режим команд Vi:
<Shift+F3>
RepeatLastCharSearch
Повторите последний записанный поиск символов.
- Режим команд Vi:
<;>
RepeatLastCharSearchBackwards
Повторите последний записанный поиск символов, но в обратном направлении.
- Режим команды Vi:
<,>
RepeatSearch
Повторите последний поиск в том же направлении, что и раньше.
- Режим команды Vi:
<n>
RepeatSearchBackward
Повторите последний поиск в том же направлении, что и раньше.
- Режим команды Vi:
<N>
SearchChar
Прочтите следующий символ, а затем найдите его, в дальнейшем, а затем откажитесь от символа. Это предназначено для функций t.
- Режим команды Vi:
<f>
SearchCharBackward
Прочтите следующий символ, а затем найдите его, вернитесь назад, а затем откажитесь от символа. Это предназначено для функциональных возможностей T.
- Режим команды Vi:
<F>
SearchCharBackwardWithBackoff
Прочтите следующий символ, а затем найдите его, вернитесь назад, а затем откажитесь от символа. Это предназначено для функциональных возможностей T.
- Режим команды Vi:
<T>
SearchCharWithBackoff
Прочтите следующий символ, а затем найдите его, в дальнейшем, а затем откажитесь от символа. Это предназначено для функций t.
- Режим команды Vi:
<t>
SearchForward
Запрашивает строку поиска и инициирует поиск после AcceptLine.
- Режим вставки vi:
<Ctrl+s>
- Режим команды Vi:
<?>
,<Ctrl+s>
Пользовательские привязки ключей
PSReadLine поддерживает пользовательские привязки ключей с помощью командлета Set-PSReadLineKeyHandler
. Большинство пользовательских привязок ключей вызывают одну из указанных выше функций, например
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
ScriptBlock можно привязать к ключу. ScriptBlock может делать практически все, что вы хотите. Некоторые полезные примеры:
- Изменение командной строки
- открытие нового окна (например, справки)
- изменение каталогов без изменения командной строки
ScriptBlock получает два аргумента:
$key
— Объект [ConsoleKeyInfo] , который является ключом, активировав настраиваемую привязку. Если вы привязываете один и тот же ScriptBlock к нескольким ключам и вам нужно выполнить различные действия в зависимости от ключа, можно проверка $key. Многие пользовательские привязки игнорируют этот аргумент.$arg
— произвольный аргумент. Чаще всего это целочисленный аргумент, который пользователь передает из привязок ключа DigitArgument. Если привязка не принимает аргументы, разумно пропустить этот аргумент.
Рассмотрим пример, который добавляет командную строку в журнал без ее выполнения. Это полезно, если вы понимаете, что забыли что-то сделать, но не хотите повторно вводить командную строку, которую вы уже ввели.
$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
Вы можете увидеть еще много примеров в файле SamplePSReadLineProfile.ps1
, который установлен в папке модуля PSReadLine.
Большинство привязок ключей используют некоторые вспомогательные функции для редактирования командной строки. Эти API описаны в следующем разделе.
API-интерфейсы поддержки пользовательской привязки ключей
Следующие функции являются открытыми в Microsoft.PowerShell.PSConsoleReadLine, но не могут быть напрямую привязаны к ключу. Большинство из них полезны в пользовательских привязках ключей.
void AddToHistory(string command)
Добавьте командную строку в журнал, не выполняя ее.
void ClearKillRing()
Очистите кольцо убийства. В основном используется для тестирования.
void Delete(int start, int length)
Удаление символов длины с начала. Эта операция поддерживает отмену и повтор.
void Ding()
Выполните действие Ding в зависимости от предпочтений пользователей.
void GetBufferState([ref] string input, [ref] int cursor)
void GetBufferState([ref] Ast ast, [ref] Token[] tokens,
[ref] ParseError[] parseErrors, [ref] int cursor)
Эти две функции извлекают полезные сведения о текущем состоянии входного буфера. Первый чаще используется в простых случаях. Второй используется, если привязка выполняет более сложные действия с помощью Ast.
IEnumerable[Microsoft.PowerShell.KeyHandler]
GetKeyHandlers(bool includeBound, bool includeUnbound)
IEnumerable[Microsoft.PowerShell.KeyHandler]
GetKeyHandlers(string[] Chord)
Эти две функции используются .Get-PSReadLineKeyHandler
Первый используется для получения всех привязок ключей. Второй используется для получения определенных привязок ключей.
Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()
Эта функция используется Get-PSReadLineOption и, вероятно, не слишком полезна в пользовательской привязке ключа.
void GetSelectionState([ref] int start, [ref] int length)
Если в командной строке нет выделения, функция возвращает значение -1 как в начале, так и в значении длины. Если в командной строке есть выделенный фрагмент, возвращаются начало и длина выделенного фрагмента.
void Insert(char c)
void Insert(string s)
Вставьте символ или строку в курсор. Эта операция поддерживает отмену и повтор.
string ReadLine(runspace remoteRunspace,
System.Management.Automation.EngineIntrinsics engineIntrinsics)
Это main точка входа в PSReadLine. Он не поддерживает рекурсию, поэтому не полезен в пользовательской привязке ключа.
void RemoveKeyHandler(string[] key)
Эта функция используется Remove-PSReadLineKeyHandler и, вероятно, не слишком полезна в пользовательской привязке ключа.
void Replace(int start, int length, string replacement)
Замените некоторые входные данные. Эта операция поддерживает отмену и повтор. Этот вариант предпочтительнее удаления, а затем вставки, так как он рассматривается как одно действие для отмены.
void SetCursorPosition(int cursor)
Переместите курсор на заданное смещение. Перемещение курсора не отслеживается для отмены.
void SetOptions(Microsoft.PowerShell.SetPSReadLineOption options)
Эта функция является вспомогательным методом, используемым командлетом Set-PSReadLineOption, но может быть полезна для пользовательской привязки ключа, которая хочет временно изменить параметр.
bool TryGetArgAsInt(System.Object arg, [ref] int numericArg,
int defaultNumericArg)
Этот вспомогательный метод используется для пользовательских привязок, которые учитывают DigitArgument. Типичный вызов выглядит следующим образом:
[int]$numericArg = 0
[Microsoft.PowerShell.PSConsoleReadLine]::TryGetArgAsInt($arg,
[ref]$numericArg, 1)
Примечания
Журнал команд
PSReadLine хранит файл журнала, содержащий все команды и данные, введенные из командной строки. Файлы журнала — это файл с именем $($host.Name)_history.txt
. В системах Windows файл журнала хранится по адресу $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine
. В системах, отличных от Windows, файлы журнала хранятся в $env:XDG_DATA_HOME/powershell/PSReadLine
или $env:HOME/.local/share/powershell/PSReadLine
.
Журнал может содержать конфиденциальные данные, включая пароли. PSReadLine пытается отфильтровать конфиденциальную информацию. Все командные строки, содержащие следующие строки, не записываются в файл журнала.
- password
- asplaintext
- token
- apikey
- secret
Отзывы & участие в PSReadLine
Вы можете отправить запрос на вытягивание или отправить отзыв на странице GitHub.
См. также:
- PSReadLine находится под сильным влиянием библиотеки строк чтения GNU.