Прокручивать только определенные типы файлов в PS с помощью пользовательского дополнения вкладки в командной строке - PullRequest
0 голосов
/ 01 марта 2019

Я использую завершение вкладки на основе PSReadline в PowerShell, и я надеюсь реализовать следующее пользовательское поведение завершения:

В моей папке

File1.java
File1.class
File2.java
File2.class

Если я использую tab после java, я получаю список файлов:

java .\File
File1.java
File1.class
File2.java
File2.class

Но я хочу использовать ярлык, чтобы я мог прокручивать только .java-файлы, но без показанного расширения.Я также хочу избавиться от ". \" В названии.

Так что, если я напишу java и использую вкладку, я хочу иметь

java File1

И следующая вкладка дает

java File2

И т. Д. (С вкладкой или некоторымидругой ключ).

Мне тоже интересно, перед компиляцией java-файлов у меня есть папка

File1.java
File2.java

Теперь я хочу написать javac и использовать tab, чтобы я получил

javac File1.java

И табуляция снова дает

javac File2.java

и т. Д.

Возможно ли это?

1 Ответ

0 голосов
/ 01 марта 2019

Используйте командлет Register-ArgumentCompleter (PSv5 +):

Register-ArgumentCompleter -Native -CommandName java -ScriptBlock {
    param($wordToComplete)
    (Get-ChildItem $wordToComplete*.java).BaseName
}

Register-ArgumentCompleter -Native -CommandName javac -ScriptBlock {
    param($wordToComplete)
    (Get-ChildItem $wordToComplete*.java).Name
}

Чтобы определить альтернативный ключ или аккорд для вызова завершения, используйте Set-PSReadLineKeyHandler;например, чтобы Ctrl + K вызывал завершения:

Set-PSReadLineKeyHandler -Key ctrl+k -Function TabCompleteNext
Set-PSReadLineKeyHandler -Key ctrl+shift+k -Function TabCompletePrevious

Обратите внимание, что это влияет на завершение глобально - вы не можете реализовать ключ завершения конкретной команды таким образом.

...