在命令行上使用自定义 Tab 完成仅循环浏览 PS 中的特定文件类型
Cycle through only specific file types in PS using custom tab completion on the command line
我使用 PowerShell 的基于 PSReadline 的制表符完成功能,我希望实现以下自定义完成行为:
我有一个文件夹
File1.java
File1.class
File2.java
File2.class
如果我在 java
之后使用制表符,我会得到一个文件列表:
java .\File
File1.java
File1.class
File2.java
File2.class
但我想使用快捷方式,这样我就可以只滚动浏览 .java 文件,而不会显示扩展名。我还想去掉名称中的“.\”。
所以如果我写 java
并使用制表符,我想要
java File1
下一个选项卡给出
java File2
等等(使用制表符或其他键)。
我也想知道,在编译 java 文件之前我有文件夹
File1.java
File2.java
我现在想写 javac 并使用制表符所以我得到
javac File1.java
然后选项卡再次给出
javac File2.java
等等。
这可能吗?
使用 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
}
要定义调用完成的替代键或和弦,请使用 Set-PSReadLineKeyHandler
;例如,要使 Ctrl+K 调用补全:
Set-PSReadLineKeyHandler -Key ctrl+k -Function TabCompleteNext
Set-PSReadLineKeyHandler -Key ctrl+shift+k -Function TabCompletePrevious
请注意,这会影响全局完成 - 您不能以这种方式实现特定于命令的完成键。
我使用 PowerShell 的基于 PSReadline 的制表符完成功能,我希望实现以下自定义完成行为:
我有一个文件夹
File1.java
File1.class
File2.java
File2.class
如果我在 java
之后使用制表符,我会得到一个文件列表:
java .\File
File1.java
File1.class
File2.java
File2.class
但我想使用快捷方式,这样我就可以只滚动浏览 .java 文件,而不会显示扩展名。我还想去掉名称中的“.\”。
所以如果我写 java
并使用制表符,我想要
java File1
下一个选项卡给出
java File2
等等(使用制表符或其他键)。
我也想知道,在编译 java 文件之前我有文件夹
File1.java
File2.java
我现在想写 javac 并使用制表符所以我得到
javac File1.java
然后选项卡再次给出
javac File2.java
等等。
这可能吗?
使用 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
}
要定义调用完成的替代键或和弦,请使用 Set-PSReadLineKeyHandler
;例如,要使 Ctrl+K 调用补全:
Set-PSReadLineKeyHandler -Key ctrl+k -Function TabCompleteNext
Set-PSReadLineKeyHandler -Key ctrl+shift+k -Function TabCompletePrevious
请注意,这会影响全局完成 - 您不能以这种方式实现特定于命令的完成键。