是否可以使用PowerTab为别名功能配置标签完成?

时间:2013-02-27 18:00:38

标签: powershell command-line powershell-v2.0 powertab

我为Micrsosoft TFS和Micrsosoft TFPT命令行工具编写了一组PowerShell辅助函数(其中一些工具又使用了TFPT附带的Posh cmdlet)。为了缩短标准命名约定中的命令,例如Get-TfsStatusInvoke-TfsCommit,我也创建了别名(例如tf-statustf-commit)。我也使用PowerTab进行选项卡完成,但默认情况下v0.99.6不支持使用别名完成选项卡。

如何配置制表符完成,以便所有以tf-开头的别名可以显示可用命令列表?

我看到PowerTab包含一个用于修改标签扩展行为的编辑器,但我不清楚我需要配置什么。我也知道PowerTab关闭后,默认的豪华标签完成与别名一起使用。

示例函数和别名:

function Get-TfsStatus([switch]$all) {
    # Do something
}

Set-Alias tf-status Get-TfsStatus
Set-Alias tf-st Get-TfsStatus

注意:最初,我的实际函数名称为tf-statustf-commit等,但当您Import-Module时,PowerShell会抱怨我没有遵循PowerShell的命名标准功能

2 个答案:

答案 0 :(得分:1)

首先,您可以使用非标准名称,而不会收到警告。

Import-Module <<path_to_your_module>> -DisableNameChecking

虽然根据经验,遵循(在大多数情况下)命名惯例是一个好习惯。

默认情况下,自动填充对别名有效。什么工作,甚至是别名,是参数完成。因此,无论您键入tf-status -a还是Get-TfsStatus -a,如果按Tab键,它都会自动填充到-All

Powershell控制台和ISE编辑器都没有选项来启用别名完成。

有关你的情况,我建议使用“错误”的名称(无别名),进口与-DisableNameChecking,然后自动完成会为工作tf-status

关于PowerTab - 并非所有主机都支持此功能。检查this page以查看支持哪些功能。我不太清楚 - 我确信可以添加别名,但这可能是一项繁琐的任务,需要为每个用户完成。如果有人没有powertab,他们将无法使用您在模块中定义的别名自动完成。

答案 1 :(得分:1)

这不是我预期的用例,所以它得不到很好的支持。但是,只要您的别名继续在其名称中包含“ - ”,就有一种简单的方法可以解决此问题。

修改 TabExpansionCore.ps1 第957行,将“别名”添加到命令类型列表中。

Get-Command -CommandType Alias,Function,ExternalScript,Filter,Cmdlet -Name "$($Matches[1])*" |