Еквівалент Ctrl-r bash в PowerShell


19

хтось знає про спосіб, як мати функцію пошуку назад команди команд bash [Ctrl-r][Ctrl-o]), які є настільки корисними, у програмі Windows powerhell?

C-rє більш потужним arrow upманіпулюванням історією, воно схоже на emacs C-rу тому, що він шукає назад всередині команд, які ви ввели раніше. Потім C-oвиконує цю команду і негайно розміщує на рядку наступну команду після цього. Так ви зможете ефективно повторювати передані серії команд. Крім того, він переглядає збережену історію, а не історію сеансів. ( ~/.bash_historyфайл). Що нескінченно корисно.

Спасибі.

ps: як бонус, заповнення вкладки, що не працює циклами, також було б дивним.


Що означає ctrl O, який ви хочете повторити? Більше інформації нам завжди добре ...
Austin T French

Так, відредагував питання :)
v.oddou

2
Я не вірю, що ця функція підтримується. PowerShell 3 має гачок, PSConsoleHostReadlineякий може бути корисним. Хорошим місцем для початку було б використовувати PSReadLine , який використовує цей гачок. PSReadLine не підтримує ctrl-o, але він підтримує ctrl-r (нібито - це не працювало для мене). Я можу поглянути на реалізацію ctrl-o протягом Різдва, оскільки це здається корисним.
dangph

2
Ах, PSReadLine, це здається моєю відповіддю, ви повинні розмістити це як відповідь. у ньому немає Co, але в ньому є Cr, який є найважливішим. Він також має налаштування заповнення вкладок, які я хотів у бонус.
v.oddou

2
Тут автор PSReadline - @ v.oddou - Ctrl + K повинен бути прив’язаний до KillLine в режимі Emacs. Ctrl + R повинен працювати без вводу або без набору тексту. Я радий додати Ctrl + O - не соромтесь відкривати випуск на github.
Джейсон Ширк

Відповіді:


15

Введіть перші літери команди та натисніть F8.

Можна також натискати F7та вводити перші літери.

Детальніше: http://technet.microsoft.com/en-us/magazine/ff678293.aspx


F7 нічого не робить ...
Даніель К.

Чи могли б ви надати більше інформації? Можливо, це може бути корисним для інших. Яка версія Powershell та яка версія Windows? За замовчуванням Powershell досить обмежений. Краще скористатися MobaXterm або ConEmuMaximus 5, щоб покращити UX
georgik

@CatBoss F7 працює в cmd
phuclv

1
@ LưuVĩnhPhúc, тоді відповідь потрібно сказати так, адже питання стосується Powershell ....
Daniel K.

Дивіться відповідь нижче - не витрачайте час на F8, якщо ви перебуваєте на powerhell 5+
Nicholas DiPiazza

6

WMF 5.0 RTM , що включає Windows PowerShell 5 , тепер підтримує ту саму функцію пошуку зворотних команд bash CTRL+R. Я використовував це в Windows 10 Anniversary Edition, і моя пам'ять м'язів на базі дуже рада.

Підтримка насправді відбувається від модуля PowerShell PSReadLine, про який я бачу, згадувалося в деяких коментарях цього питання. Хороша річ у тому, що PSReadLine тепер, як видається, включений до базової установки WMF 5.0 , принаймні, це в Windows 10.

Якщо ви працюєте з PowerShell 3 або новішою версією , ви також можете встановити PSReadLine і отримати функцію пошуку історії.

Примітка. Я не дізнався, як змусити це працювати в ISE, як CTRL+Rце відображено на щось інше (Show / Hide Script Pane).


4

Для маніпулювання вашою історією ви можете використовувати командлети історії, перерахуйте їх за допомогою цієї команди:

Get-Command *-history

Пошук вашої історії робиться так, сміливо робіть функцію, щоб скоротити її:

Get-history | Select-String "command"

function f ($Name) { Get-history | Select-String $name }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.