Cycle through only specific file types in PS using custom tab completion on the command line

假如想象 提交于 2019-12-08 02:54:15

Use the Register-ArgumentCompleter cmdlet (PSv5+):

# With `java`, cycle through *.java files, but without the extension.
Register-ArgumentCompleter -Native -CommandName java -ScriptBlock {
    param($wordToComplete)
    (Get-ChildItem $wordToComplete*.java).BaseName
}

# With `javac`, cycle through *.java files, but *with* the extension.
Register-ArgumentCompleter -Native -CommandName javac -ScriptBlock {
    param($wordToComplete)
    (Get-ChildItem $wordToComplete*.java).Name
}

To define an alternative key or chord for invoking completion, use Set-PSReadLineKeyHandler; e.g., to make Ctrl+K invoke completions:

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

Note that this affects completion globally - you cannot implement a command-specific completion key that way.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!