
Я ищу эквивалент 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.