JDo*_*Doe 4 powershell tab-completion programmable-completion
我使用 PowerShell 的基于PSReadline的选项卡完成功能,并且希望实现以下自定义完成行为:
在我有的文件夹中
File1.java
File1.class
File2.java
File2.class
Run Code Online (Sandbox Code Playgroud)
java
如果我在获得文件列表后使用选项卡:
java .\File
File1.java
File1.class
File2.java
File2.class
Run Code Online (Sandbox Code Playgroud)
但我想使用快捷方式,这样我就可以只滚动浏览 .java 文件,但不显示扩展名。我还想去掉名称中的“.\”。
所以如果我编写java
并使用选项卡我想要
java File1
Run Code Online (Sandbox Code Playgroud)
下一个选项卡给出
java File2
Run Code Online (Sandbox Code Playgroud)
依此类推(使用 Tab 或其他键)。
我还想知道,在编译 java 文件之前我有文件夹
File1.java
File2.java
Run Code Online (Sandbox Code Playgroud)
我现在想编写 javac 并使用 tab 所以我得到
javac File1.java
Run Code Online (Sandbox Code Playgroud)
再次制表符给出
javac File2.java
Run Code Online (Sandbox Code Playgroud)
等等。
这可能吗?
使用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
}
Run Code Online (Sandbox Code Playgroud)
要定义调用完成的替代键或和弦,请使用Set-PSReadLineKeyHandler
; 例如,要完成Ctrl+K调用:
Set-PSReadLineKeyHandler -Key ctrl+k -Function TabCompleteNext
Set-PSReadLineKeyHandler -Key ctrl+shift+k -Function TabCompletePrevious
Run Code Online (Sandbox Code Playgroud)
请注意,这会影响全局完成 - 您无法以这种方式实现特定于命令的完成键。
归档时间: |
|
查看次数: |
305 次 |
最近记录: |