Используйте CTRL + D для выхода и CTRL + L для cls в консоли Powershell - PullRequest
31 голосов
/ 02 декабря 2011

я пытаюсь сделать

CTRL + D - выход из консоли Powershell

и

CTRL + L - очистить экран

как в bash.

До сих пор я видел, что мы можем определить

function ^D {exit}

но это означает, что я должен нажать CTRL + D, а затем нажать Enter, чтобы он заработал.

Кроме того, он даже не позволяет мне определить

function ^L {exit}

Есть ли способ добавить эти привязки клавиш в стандартную консоль Powershell?

Ответы [ 5 ]

28 голосов
/ 14 января 2013

Существует новая библиотека PSReadline для Powershell v3.0 , которая имитирует завершение вкладки GNU Bash и привязки клавиш.Четный CTRL + R для обратных инкрементных поисковых работ.Именно то, что я хотел.

14 голосов
/ 02 декабря 2011

Если вы не против полагаться на внешнюю программу, вы можете сделать следующее с помощью AutoHotKey :

#IfWinActive ahk_class ConsoleWindowClass
^L::SendInput , {Esc}cls{Enter}
^D::SendInput , {Esc}exit{Enter}
#IfWinActive

Вышеописанное будет работать с консолью PowerShell или CMD.В противном случае единственное, что я могу придумать, - это поработать над магией P / Invoke с помощью SetWindowsHookEx.

Edit: Исправлен сценарий AutoHotkey для прохождения клавиш быстрого доступа к другим программам.

9 голосов
/ 02 декабря 2018

Старый вопрос, но с PowerShell 5.1 и PowerShell Core 6.x:

Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit

7 голосов
/ 05 января 2012

Существует также оснастка PowerShell под названием PSEventing, которая позволит вам сделать это (см. Демонстрацию на первой странице:

http://pseventing.codeplex.com/releases/view/66587

# clear screen in response to ctrl+L, unix style 
register-hotkeyevent "ctrl+L" -action { cls; write-host -nonewline (prompt) }
1 голос
/ 07 сентября 2018

Вы можете установить PSReadline в режим emacs, он не только выйдет с ^D, вы сможете перейти к началу строки с ^A, к концу строки с ^E

Включите это в свой профиль: Set-PSReadlineOption -EditMode Emacs

Я использую cmder, который использует ConEmu, найдите profile.ps1 с <appdir>/vendor/ для этого случая, и вы можете добавить в этот файл.

В противном случае вы можете добавить к местоположениям по умолчанию, куда powershell загружает его. Один из учебников ЗДЕСЬ.

...