Программно вывести список всех дополнений для некоторого текста в PowerShell

Программно вывести список всех дополнений для некоторого текста в PowerShell

Я ищу эквивалент completeфункции bash, где я перечисляю все возможные дополнения для некоторого текста. В общем, дайте мне все варианты, которые я получу, если буду многократно нажимать tab. Я знаю, что есть такие крутые штуки, как powertab, но мне нужен способ получить их как часть функции.

Я пытаюсь сделать так, чтобы включить автодополнение табуляции в подчиненном процессе, работающем в глупой оболочке. Обычное автодополнение табуляции недоступно, поскольку я отправляю и получаю данные из stdin/stdout. Я хотел бы иметь функцию, которую я могу вызвать и которая даст мне все автодополнения для некоторого текста, потому что в противном случае мне не от чего будет отталкиваться.

решение1

Как всем известно, все ОС, языки, инструменты сценариев имеют свои сильные и слабые стороны.

Не должно быть никаких ожиданий, что то, к чему вы привыкли или хотите, будет в следующей вещи, которую вы используете. Если X или Y там нет, то это значит, что вам нужно дополнение 3rdP или вам придется написать его самостоятельно.

Вы можете настроить PowerShell consolehost и ISE для многих вещей, все остальное требует написания собственного кода. Изучите сочетания клавиш дляPowerShell consolehost, ISEидля VSCode.

В PowerShell нет «полного» переключателя, командлета и т. д. Чтобы получить то, что вы, похоже, ищете в PowerShell consolehost, вы вводите имя командлета, пробел, затем тире, затем нажимаете CRTL+Пробел.

Get-ChildItem -[CRTL+Spacebar]

В панели редактора в ISE и VSCode есть динамический всплывающий IntelliSense. В консолях ISE и VSCode работает та же комбинация клавиш.

Что касается этого варианта использования...

«Я пытаюсь включить автодополнение табуляцией в подчиненном процессе, работающем в глупой оболочке. Обычное автодополнение табуляцией недоступно, поскольку я отправляю и получаю данные из stdin/stdout. Я хотел бы иметь функцию, которую я могу вызвать и которая выдаст мне все автодополнения для некоторого текста, потому что в противном случае мне не от чего будет отталкиваться».

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

Или с помощью модуля надстройки, который существует в MS PowershellGalery.com

Find-Module -Name '*expansion*' | Format-Table -AutoSize
Find-Module -Name '*completer*' | Format-Table -AutoSize
Find-Module -Name '*tab*' | Format-Table -AutoSize

Смотрите видео здесь: https://channel9.msdn.com/Blogs/trevor-powershell/Authoring-Custom-PowerShell-Intellisense-with-Trevor-Sullivan

Есть и другие элементы, в зависимости от используемой версии PowerShell, с помощью которых можно добиться других вещей в стиле Bash. Например:

Как заставить PowerShell работать как BashНовые версии PowerShell включают PSReadline, который можно использовать для следующих целей:

Set-PSReadlineKeyHandler -Key Tab -Function Complete

Чтобы сделать его постоянным, введите эту команду в

C:\Users\[User]\Documents\WindowsPowerShell\profile.ps1.

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