我使用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并使用tab,这样我得到
javac File1.java
然后再次显示标签
javac File2.java
依此类推。
这可能吗?
答案 0 :(得分:0)
使用Register-ArgumentCompleter
cmdlet(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
请注意,这会全局影响完成-您无法以这种方式实现特定于命令的完成键。