В bash я могу сделать Ctrl + R и начать вводить команду для поиска в моей истории.
Как это сделать в PowerShell?
Есть ли способ привязать ключ к чему-то вроде?
function GH($str) {get-history | select-string $str}
Но мне нужно было бы перечитать строку для каждого ввода символа или удалить, чтобы вывести соответствующие команды, такие как Ctrl + R делает.
Возможно ли это?
Вы можете исправить это, приняв модуль PSReadLine.
Смотрите статью в блоге Hey, Scripting Guy! об этой баснословной реализации readline для PowerShell.
В частности, использование Ctrl+Alt+(Shift)+? для отображения всех кейбингов.
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
Короче говоря: либо установите этот модуль вручную, либо перейдите на Windows PowerShell v5.
.Также есть графический поиск по клавише F7. При нажатии отобразится всплывающее окно, которое вы можете прокрутить, чтобы найти команду, которая была выполнена ранее. Нажатие клавиши Enter при наведении курсора на строку приведет к ее повторному запуску.
I don't know when this got added, but on my non-customized, updated, Windows 10, it's built in. Hit ctrl+r for reverse history search, it works great.
Вы также можете запустить свою команду, поставив символ # перед частичным текстом поиска команды, которую вы ищете, а затем нажмите кнопку tap (при необходимости несколько раз) для поиска по сеансу. история.