Мне нравится Powershell, но, исходя из опыта работы с Linux, есть несколько вещей, которые действительно меня беспокоят. Как, например, как работает автозаполнение по умолчанию.
Например: Get-PS расширяется до «Get-PSBreakpoint», который является первой соответствующей командой. В bash, если есть только одна команда, соответствующая bash расширится до соответствующей команды. Если есть несколько нажатий на вкладку, когда однажды ничего не происходит, вкладка двойного касания покажет список соответствующих команд, но не расширяется. Есть ли способ заставить Powershell вести себя так?
И еще одна вещь, если я написал одну строку и переместил маркер обратно к более ранней команде (маркер находится там, где находится ^):
«Get-PSS ^ | Remove-PSSession» автоматически завершает «Get-PSSession ^», удаляя все завершающие команды. В bash завершающие команды все равно будут там не затронуты. Есть ли способ заставить Powershell не удалять завершающие команды при автозаполнении?
Бонусом было бы получить CTRL + L, чтобы очистить экран. CTRL + A, чтобы перейти к началу строки, и CTRL + E, чтобы перейти к концу строки.
источник
Ответы:
Проверьте PSReadline .
Из статьи:
Я использую это ежедневно!
источник
Set-PSReadlineKeyHandler -Key Tab -Function Complete
CompleteMenu
вместоComplete
более похожего на bash, он позволяет вам использовать клавиши со стрелками для навигации по выборуВозможно, вам стоит взглянуть на Powertab , настраиваемое расширение для вкладки PowerShell.
источник
Привет, Питер, просто нажми F8 для чего-то вроде speedsearch. Он завершается командами, которые вы запускаете ранее, которые начинаются с того, что у вас есть в строке. Проблема с удалением трейлинга раздражает, я пишу предложение в Connect по поводу той же проблемы. В основном вы можете использовать Powershell ISE, который ведет себя немного лучше (не удаляйте висячие символы).
источник
Старая подсистема command.exe по-прежнему участвует в PowerShell и вызывает много неприятных действий. Но с PowerShell v3 графический интерфейс (PowerShell ISE) теперь можно использовать, и он включает в себя гораздо более современный опыт завершения + раскрашивание.
источник
PowerShell использует те же функции консоли, что и почтенная командная строка; так у вас есть обычный Home / End, и:
... но, насколько я знаю, нет возможности показать все возможные варианты.
источник
Обычный powershell использует cmd в качестве окна командной строки. Вот почему он имеет огромное наследие (программы ретранслируют поведение старого cmd целую вечность), который нельзя изменить из-за обратной сопоставимости.
Я рекомендую вам использовать powershell_ise вместо powershell (он входит в стандартную комплектацию powershell). Версия 3.0 (не уверена в предыдущем) поддерживает Intellisense из коробки. Это очень близко к стилю завершения bash. Просто нажмите Ctrl + Пробел вместо Tab. У меня возникают проблемы с пользовательскими дополнениями в PowerTab, но Intellisense прекрасно с ним работает. Powershell_ise также сохраняет конечные команды, имеет нормальный режим выбора, поддерживает Ctrl + C, Ctrl + V, Ctrl + A для выбранной введенной команды, поэтому Ctrl + A, переход к началу строки, Ctrl + A, до конца (или Home /Конец).
источник
PowerShell использует собственный синтаксический анализатор для команд, поэтому в некотором смысле это оболочка, отличная от cmd.exe, даже если они используют один и тот же терминал (окно графического интерфейса пользователя).
Из-за этого различия PowerShell позволяет вам переопределить функциональность завершения табуляции своей собственной функцией. У меня не было времени возиться с этим самостоятельно, но вы в основном переопределяете функцию
tabexpansion
в своем профиле, так же, как вы можете переопределитьprompt
функцию.Я нашел эту статью , написанную Ли Холмсом (автором потрясающей книги Windows PowerShell Cookbook ), в которой описывается переопределение табуляции, очень похожее на то, что вы ищете. Вы могли бы, вероятно, настроить его, чтобы дать вам именно то, что вы хотите.
источник