1

Текущее поведение PS при заполнении вкладок заключается в завершении с первой записью, а на последовательных вкладках просматривают остальные. Если у меня есть десятки записей, которые соответствуют первым набранным символам, я теперь либо:

  • вкладка навсегда, пока я не найду тот, который мне нужен, или
  • удалите длинное имя, напишите больше букв, прежде чем я нажму вкладку.

Все это ужасно неэффективно. Есть ли способ остановить его на неоднозначном завершении, как в bash?

1 ответ1

0

Насколько я знаю, изначально нет способа сделать то, что вы просите. У Bash есть это, потому что команда Bash решает добавить его по каким-либо причинам, и хотя PS имеет много Linux, таких как псевдонимы, форматирование PS - это совсем другое. Я не знаю каких-либо усилий, чтобы заставить PS вести себя как bash. PS основан на объектах, Bash и т.п. основан на строках.

Если вы считаете, что это нужно, отправьте запрос на сайт пользователя PS GitHub. Тем не менее, это не что-то, что я когда-либо видел в пользовательском счете или других подобных сайтах, которые общаются с командой MS PS.

Вы можете изменить некоторые параметры отображения списка, например, показать широкий вертикальный список, например, выглядеть как Emacs. Вы делаете это, устанавливая это в своих профилях PS, связываясь с опциями PSReadline, и есть много опций, использующих PSReadline, но это работает только в хосте консоли PS не в ISE (и нет места, чтобы сделать это так) или в интегрированной консоли VSCode (замена для ISE, это было запрошено здесь). Тем не менее, поскольку вы можете иметь несколько терминалов, открытых рядом в VSC, таким образом, получая консольный хост, то есть PSReadline, это низкий приоритет для интегрированной консоли VSC, что я могу сказать.

about_PSReadline

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_psreadline?view=powershell-6

Например:

$FormatEnumerationLimit = -1

# PSReadline Options
Set-PSReadlineOption -EditMode Emacs
Set-PSReadlineOption -BellStyle None 
Set-PSReadLineKeyHandler -Chord tab -Function Complete

Вы можете написать свою собственную оболочку, чтобы сделать что-то похожее на это, или использовать Out-GridView в качестве графического интерфейса пользователя, чтобы показать свой список и выбрать его там.

Например:

Out-GridView (Microsoft.PowerShell.Полезность)

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/out-gridview

Создание упрощенного интерфейса с графическим интерфейсом с Out-GridView

https://mikefrobbins.com/2014/09/11/creating-a-simplistic-gui-interface-with-out-gridview

Создание графического интерфейса с использованием Out-GridView в PowerShell

https://mcpmag.com/articles/2016/02/17/creating-a-gui-using-out-gridview.aspx

В основном OGV <покажет вам ваш длинный список, вы можете выбрать его там, и он будет отображаться в командной строке или назначаться переменной в запущенном скрипте / функции и т.д.

Наконец, помните, что PS уже некоторое время был OSS, и если вы думаете, что у вас есть навыки, чтобы добавить это, то сделайте запрос на извлечение, разработайте его и отправьте обратно, чтобы увидеть, будет ли он принят.

Обновление для ОП

Я еще немного покопался в этом из любопытства (и я не возражаю против поведения по умолчанию - хорошо, что мне редко нужен bash в моей повседневной работе.), Добавив это в свой профиль PS, должно дать вам то, что вы ищете ,

Set-PSReadlineKeyHandler -Key Tab -Function Complete

Покажите, используя документ MS PSReadline, и эту статью ...

Эмуляция-Баш-GNU-Readline-с-PowerShell-30

... это должно привести вас туда.

Да, и только что нашел этот, который очень похож на то, что вы спрашиваете здесь, и указывает на ту же информацию, которую я уже дал.

Как заставить завершение PowerShell работать как Bash

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .