Можно ли сделать так, чтобы автодополнение в Powershell работало как в bash?

Можно ли сделать так, чтобы автодополнение в Powershell работало как в bash?

Я люблю Powershell, но, учитывая мой опыт работы с Linux, есть несколько вещей, которые меня действительно раздражают. Например, как работает автодополнение по умолчанию.

Например: Get-PS расширяется до "Get-PSBreakpoint", что является первой совпадающей командой. В bash, если есть только одна совпадающая команда, bash расширится до совпадающей команды. Если есть несколько, нажатие Tab один раз ничего не делает, двойное нажатие Tab покажет список совпадающих команд, но не расширится. Есть ли способ заставить Powershell вести себя так?

И еще одно, если я написал одну строку и переместил маркер обратно на более раннюю команду (маркер находится там, где находится ^):

"Get-PSS^ | Remove-PSSession" автоматически завершается в "Get-PSSession^", удаляя все конечные команды. В bash конечные команды останутся там без изменений. Есть ли способ заставить Powershell не удалять конечные команды при автоматическом завершении?

Бонусом было бы использование сочетания клавиш CTRL+L для очистки экрана, CTRL+A для перехода в начало строки и CTRL+E для перехода в конец строки.

решение1

ПроверитьPSReadline.

Из статьи:

Этот модуль заменяет опыт редактирования командной строки в PowerShell.exe. Он обеспечивает:

  • Раскраска синтаксиса
  • Простое уведомление об ошибке синтаксиса
  • Хороший многострочный опыт (редактирование и история)
  • Настраиваемые сочетания клавиш
  • Режимы Cmd и emacs (ни один из них пока не реализован полностью, но оба доступны для использования)
  • Множество вариантов конфигурации
  • Автодополнение в стиле Bash (необязательно в режиме Cmd, по умолчанию в режиме Emacs)
  • Интерактивный поиск по истории в стиле Bash/zsh (CTRL-R)
  • Кольцо Emacs yank/kill
  • Перемещение и уничтожение «слова» на основе токена PowerShell
  • Отменить повторить
  • Автоматическое сохранение истории, включая обмен историей между сеансами в реальном времени
  • Дополнение «Меню» (что-то вроде Intellisense, выбор дополнения со стрелками) через Ctrl+Пробел

Я использую его каждый день!

решение2

Может быть, вам стоит взглянуть наPowertab, настраиваемое расширение PowerShell Tab.

решение3

привет Питер просто нажмиФ8для чего-то вроде speedsearch. Он завершается командами, которые вы запускаете ранее, которые начинаются с того, что у вас есть в строке. Проблема с удалением завершающих символов раздражает, я пишу предложение в Connect относительно той же проблемы. В основное время вы можете использовать Powershell ISE, который ведет себя немного лучше (не удаляет завершающие символы).

решение4

PowerShell использует те же функции консоли, что и почтенная командная строка; поэтому у вас есть обычные Home/End и:

  • F3для вызова предыдущей команды
  • F1чтобы скопировать один символ из предыдущей команды
  • F7всплывающее окно истории

...но, насколько мне известно, возможности показать все возможные варианты завершения нет.

Связанный контент