インターネット上にWindowsでのエイリアス設定の断片的な解説はあるのですが、それらを見てもPowerShellでの汎用的で永続的なエイリアス設定は分かりづらいなと感じたため、本記事を作成しました。
WindowsでVSCodeでコードを書き、ターミナルで以下操作を実行するとします。
git branch
git checkout -b xxxx
git add .
git commit -m ""
git push origin xxxx
git checkout main
git branch -d xxxx
VSCodeのGUIでもGitの操作は可能ですが、コマンドラインからの方が楽なときがあります。でも毎回このようなコマンド入力をするのが面倒なので、エイリアスを設定したいと思いました。
Linuxではエイリアスは設定が簡単(alias gcb='git checkout -b'
)なのですが、Windowsだとちょっと面倒です。
WindowsでVSCodeのデフォルトのターミナルはPowerShellで、私もそのまま使っているので、PowerShellでエイリアスを設定します。
PowerShellではエイリアス設定コマンドがあり(Set-Alias)、一見これで済みそうに思えますが、Set-Aliasではコマンド単体へのエイリアスのみ設定可能で、コマンドのオプションや引数を含めたエイリアスは残念ながら作成できません。
PowerShellでLinuxライクなエイリアスを作成するためには、エイリアスで実行したいコマンドを一度Powershellでの関数(Function)として定義する、その関数に対してSet-Aliasを実行する、PowerShell起動時に読み込まれるスクリプトに定義する、という手順を踏むと実現できそうです。
Linuxに比べると若干面倒ですが、一旦設定手順が分かればガシガシエイリアスを追加できます。
以下手順です。
まずPowerShellを起動します。
スタートメニュー > powershell と入力し、Windows PowerShell
をクリック
またはコマンドプロンプトからpowershell
を実行など
次に、以下のコマンドで、PowerShell起動時に読み込まれるスクリプトのファイル名を確認します。
$profile
実行結果は以下のようになります。
C:\Users\USERNAME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
私の環境では、このファイルは存在していなく、格納ディレクトリもありませんでした。
なので、ディレクトリから作成します。
マイドキュメントを開き、WindowsPowerShell
ディレクトリを作成します。
次にそのディレクトリに移動し、新規作成 -> テキストドキュメントでMicrosoft.PowerShell_profile.ps1
を作成します (拡張子も.txtから.ps1に変更します)
任意のエディタでMicrosoft.PowerShell_profile.ps1
を開き、以下の内容を入力して保存します。
※Set-Alias | findstr g
を実行してもらうと分かるのですが、gから始まるコマンドにはデフォルトで複数のエイリアスが登録されています(gc: Get-Content
など)。そのため、今回追加で設定するGitコマンドのエイリアスでは、gi+オプション
といった形の省略形で登録しました(gt
よりgi
の方が打ちやすいためそうしました)。
最終行に、giから始まるエイリアスの疑似的な一覧(単にエイリアス名にgiを含むもの)を登録しています。
function git-branch { git branch $args }
Set-Alias -Name gib -Value git-branch
function git-checkout-b { git checkout -b $args }
Set-Alias -Name gicb -Value git-checkout-b
function git-add { git add $args }
Set-Alias -Name gia -Value git-add
function git-commit-m { git commit -m $args }
Set-Alias -Name gicom -Value git-commit-m
function git-push-origin { git push origin $args }
Set-Alias -Name gipo -Value git-push-origin
function git-checkout-main { git checkout main $args }
Set-Alias -Name gicm -Value git-checkout-main
function git-branch-d { git branch -d $args }
Set-Alias -Name gibd -Value git-branch-d
function git-help { Get-Alias | Out-String -Stream | Select-String "git" }
Set-Alias -Name gih -Value git-help
新規にPowerShellや、VSCodeを起動します。以下コマンドでエイリアスの登録確認をします。
PS C:\Users\USERNAME> Get-Alias | findstr git
Alias gia -> git-add
Alias gib -> git-branch
Alias gibd -> git-branch-d
Alias gicb -> git-checkout-b
Alias gicm -> git-checkout-main
Alias gicom -> git-commit-m
Alias gih -> git-help
Alias gipo -> git-push-origin
ここまで確認できていれば、以降は、PowerShellやVSCodeのターミナルにおいて、冒頭のコマンドが、以下で可能になります。
git branch --> gib
git checkout -b xxxx --> gicb xxxx
git add . --> gia .
git commit -m "" --> gicom ""
git push origin xxxx --> gipo xxxx
git checkout main --> gicm
git branch -d xxxx --> gibd xxxx
こんな感じで、エイリアスをどんどん登録していけます。
その他
LinuxからWindowsにくると、grepがない違和感がすごいので、grepを作ろうと思ったのですが、findstrやOut-String -Stream | Select-String
をgrepとしてエイリアス登録しても、うまくいっていません
参考記事
更新履歴
function内でエイリアス対象のコマンドに$args
を渡さないと、エイリアスに引数を与えられないことに気づいたため、エイリアス対象の各コマンドに$args
を追加しました