3

私は、Micrsosoft TFS および Micrsosoft TFPT コマンド ライン ツール用の一連の PowerShell ヘルパー関数を作成しました (TFPT に含まれる Posh コマンドレットを使用するものもあります)。Get-TfsStatusやなどの標準的な命名規則からコマンドを短縮するために、Invoke-TfsCommitエイリアスも作成しました (例:tf-statusおよびtf-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 関数の命名基準に従っていないと文句を言います。

4

2 に答える 2

2

これは私が予想していた使用例ではないため、十分にサポートされていません。ただし、エイリアスの名前に「-」が含まれている限り、これを簡単にハッキングする方法があります。

TabExpansionCore.ps1の957 行目を編集して、コマンド タイプのリストに「Alias」を追加します。

Get-Command -CommandType Alias,Function,ExternalScript,Filter,Cmdlet -Name "$($Matches[1])*" |
于 2013-03-09T07:14:20.090 に答える
1

まず、警告を受け取ることなく、関数に非標準の名前を使用できます。

Import-Module <<path_to_your_module>> -DisableNameChecking

ただし、経験上、(ほとんどの場合) 命名規則に従うのは良い習慣です。

デフォルトでは、オートコンプリートはエイリアスでは機能しません。エイリアスであっても機能するのは、パラメーター補完です。したがって、tf-status -aまたはを入力してもGet-TfsStatus -a、Tab キーを押すと、 にオートコンプリートされ-Allます。

Powershell コンソールにも ISE エディターにも、エイリアスの補完を有効にするオプションはありません。

あなたの場合、「間違った」名前(エイリアスなし)を使用することをお勧めします。インポートする-DisableNameCheckingと、オートコンプリートがtf-status.

PowerTab について -- これはすべてのホストで完全にサポートされているわけではありません。このページをチェックして、どの機能がどこでサポートされているかを確認してください。よくわかりませんが、エイリアスを追加することは可能だと思いますが、面倒な作業になる可能性があり、ユーザーごとに行う必要があります。powertab を持っていない人は、モジュールで定義したエイリアスに対してオートコンプリートを使用できません。

于 2013-03-03T09:28:16.410 に答える