Cmdletのタブ補完がね

PowerShellのタブ補完機能はいろいろ充実しててすごくべんりなんだけど

べんりなんだけど

コマンドレットの補完に関してはちょっと不満があるよね
具体的に言うとVerbがConvertConvertToConvertFromのやつらとかね!
希望としては一旦Verbまで補完してくれて、その後Nounを改めて補完させる感じがね、いいと思うんですよ

タブ補完を直接いじる方法とかあるのかよくわかんないんですが
Get-VerbがあるのでVerbを全部補完される形で定義しときゃいいんじゃねーの?
ってことでちょっと考えてみた

最初はReadOnlyな変数でいいかなと思ってたんだけど頭に$つくからだめ
いちいちfunction作るのもなんだし、なんかないかなーってとこで

alias「やぁ」

なるほどaliasなら補完対象だし単語そのままで定義できるし良さそうだぞ

Get-Verb | % {New-Alias $_.Verb -Value Out-Null -Description 'TAB補完用ダミーalias' -Option ReadOnly -ErrorAction SilentlyContinue}

Valueはだいぶ悩んだけどとりあえずOut-Nullでいいかなって、うっかり叩いても何もおきないし
一部のVerbは既に存在するaliasとかぶるものもあるのでSilentlyContinueして無視
ReadOnlyは意味あるのかしらん、わかんない
とりあえずね、やってみました

するとどうだ

PS> conv (タブ押す)
PS> Convert (f押す)
PS> Convertf (タブ押す)
PS> ConvertFrom (-押す)
PS> ConvertFrom- (タブでNounの補完)
PS> ConvertFrom-Csv
PS> ConvertFrom-Json

悪くないんじゃないかな
暫くこれで運用してみよう

追記: 2014/12/22

ちょっと改良したのだ
先ずはこないだ覚えたCompare-Objectでaliasとして登録されてないVerbだけをNew-Aliasするようにした
エラー断固無視!はちょっとお行儀わるいもんね
そんで登録したaliasは新たに追加した関数を呼ぶようにしました

これのなにがうれしいかっつーとだよ
今まではほら補完したVerbを実行しても何も返さなかったんだけど今回ので

ss20141222175925

こうなる
そのVerbから始まるコマンドが羅列されるのだ、つまりGet-Commandしてるのだ
ほら嬉しい

$MyInvocationさまさまである

広告

Cmdletのタブ補完がね」への1件のフィードバック

  1. ピンバック: PowerShellのTAB補完はワイルドカード入れてやるとよりハッピーになれる | たっぷす庵

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中