2023年1月27日追記
Microsoft.PowerShell_profile.ps1
の設置場所が
ドキュメントの
WindowsPowerShell
から
PowerShell
に変更になりました。
posh-git
なども再インストールする必要があります。
具体例
C:\Users\[ユーザー名]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
から
C:\Users\[ユーザー名]\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
に変更されました。
追記終了
より詳細な設定の記事を書きました。
現在の設定(2021年5月12日現在)
VScode内のターミナル(Powershell)でコマンド補完(gitとか)(Windows用) - Qiita
https://qiita.com/masakinihirota/items/30767a29d947d7db8f80
Widndows10の設定ファイルの場所&ファイル名
C:\Users\{ユーザー名}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
希望
VSCodeのpowershellでも.bashrcや、.zshrcのような設定ファイルのエイリアスを使いたい、git diffと毎回打つのは面倒だな・・・
結論
管理者権限で制限モードを解いて、powershellのプロファイルに記入します。
VSCode内のパワーシェルから
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
と権限を設定します。
プロファイルを編集します。
notepad $profile
# 長いコマンドを短くしたいだけならSet-Aliasを使う。
Set-Alias ll Get-ChildItem
Set-Alias lll Get-ChildItem
Set-Alias g git
# 空白を含むコマンドの場合fuctionを使う。
function dev
{
npm run dev
}
function gd
{
git diff
}
function gg
{
git grep $args
}
Set-Alias excel "C:\Program Files (x86)\Microsoft Office\Office10\Excel.exe"
コピペok
これ以下は解説です。
前提
VSCodeのshellはpowershellです。
これはすでに最新のバージョンにしてあります。
powershellのバージョン確認方法
powershellから$PSVersionTable
を入力
D:\2017_12> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.14409.1012
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14409.1012
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
現在のバージョンはPSVersion 5.1
です。
環境
Windows7 64bit
VSCode 1.19.1
powershell 5.1
実際のやり方
制限モードを解く
まず作成したプロファイルを実行するために管理者権限のシェルから以下のコマンドを実行し、制限モードを解きます。
VSCode内のパワーシェルから
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
これを実行しないとセキュリティ上の問題でユーザー設定のプロファイルが実行されません。(※重要)
追記(2017年12月21日)
-Scope CurrentUser
とオプションを付ける事で権限の無制限化を使用ユーザーのみに限定します。
プロファイルファイルを編集します。
notepad $profile
notepadアプリが立ち上げます。
<参考>
設定ファイル場所
C:\Users\<ユーザー名>\Documents\WindowsPowerShell
設定を書き込みます。
Set-Alias lll Get-ChildItem
説明 | コマンド |
---|---|
エイリアス設定コマンド | Set-Alias |
ユーザーが設定したいエイリアス | lll |
PowerShellのコマンド | Get-ChildItem |
設定を反映させるためVSCodeを再起動させます。(※重要)
画面出力結果
D:\2017_12> lll
Directory: D:\2017_12
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2017/12/19 7:43 Jane
d----- 2017/12/20 12:32 webapp
このように表示されたら成功です。
空白を含むコマンドの場合は?
Set-Alias gd git diff
などと 空白スペースをあけて設定するとダメなようです。
Set-Alias gd "git diff"
と""で囲ってもエラーになります。
そこで、functionで設定します。
function gd
{
git diff
}
設定を反映させるためVSCodeを再起動させます。(※重要)
コマンドが正常に動けば成功です。
git diffは「q」で抜け出せます。
引数を含むコマンドの場合は?
function gg
{
git grep $args
}
$argsで複数の引数でも対応できます。
gg <検索したい文字列> <フォルダ名>
のようにしてフォルダを絞ることもできます。
単語検索
gg -w <検索したい文字列>
大文字小文字を無視して検索
gg -i <検索したい文字列>
function gg
{
git grep $args[0]
}
引数を1つだけにしたい時は、
$args[0]に変更して引数を1つだけ受け取らせます。
おまけ1
エクセルを立ち上げる。
Set-Alias excel "C:\Program Files (x86)\Microsoft Office\Office10\Excel.exe"
おまけ2
get-alias
PowerShellに組み込み済みのエイリアスのリストが表示されます。
Get-Alias のエイリアスは gal
です。
おまけ3
あれから*年、現在の肥大化した姿(2020/12/15)
# PowerShellのショートカット
# VSCodeで使う場合は変更後VSCodeの再起動必須。
Import-Module 'C:\tools\poshgit\dahlbyk-posh-git-9bda399\src\posh-git.psd1'
if(-not $env:path.Split(';').Contains('.')){
$env:path += ";."
}
# Chocolatey profile
$ChocolateyProfile = "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
if (Test-Path($ChocolateyProfile)) {
Import-Module "$ChocolateyProfile"
}
function global:prompt {
$origLASTEXITCODE = $LASTEXITCODE
Write-VcsStatus
# Replace $home by ~ if current path includes $home
$curPath = $ExecutionContext.SessionState.Path.CurrentLocation.Path
if ($curPath.ToLower().StartsWith($Home.ToLower()))
{
$curPath = "~" + $curPath.SubString($Home.Length)
}
# Limit path length up to maxPathLength
$maxPathLength = 80
if ($curPath.Length -gt $maxPathLength) {
$curPath = '...' + $curPath.SubString($curPath.Length - $maxPathLength + 3)
}
Write-Host $curPath -ForegroundColor DarkGreen
$global:LASTEXITCODE = $origLASTEXITCODE
if ($?) {
Write-Host " (*'-')" -NoNewLine -ForegroundColor "DarkGreen"
} else {
Write-Host " (*;-;)" -NoNewLine -ForegroundColor "Red"
}
return "> "
}
# エイリアス
# 長いコマンドを短くしたいだけならSet-Aliasを使う。
Set-Alias ll Get-ChildItem
Set-Alias lll Get-ChildItem
Set-Alias excel "C:\Program Files (x86)\Microsoft Office\Office10\Excel.exe"
# git系
Set-Alias g git
# unix系のgrepとは挙動が違う
Set-Alias grep Select-String
# 複数wordで空白を含むコマンドの場合fuctionを使う。
function s
{
npm run start
}
function b
{
npm run build
}
function d
{
npm run dev
}
function t
{
npm run test
}
function gd
{
git diff --cached
}
function gcm($message)
{
git commit -m $message
}
# ローカル専用
function GGG
{
git checkout main | git merge - | git branch
}
# リポジトリがオンライン上にある場合。
# git push origin HEAD | git checkout main | git merge - | git push origin HEAD | git branch
# ブランチ名を書き換える
function brm
{
git branch -m $args | git branch
}
function ma
{
git co main | git branch
}
function merge
{
git merge $args | git branch
}
# grep
function gg
{
git grep $args
}
function gr
{
git grep $args
}
function gre
{
git grep $args
}
# ブランチを新たに作成
function cb
{
& git co -b $args | Get-GitBranch
}
function main
{
git co main
}
# push
function pu
{
git push origin
}
function gpu
{
git push origin
}
function DDD
{
git branch -D $args
}
# mainブランチに移動後main以外のブランチを削除
# その後ブランチを表示
function DDDDD
{
git co main | git branch --merged `
| Select-String -NotMatch -Pattern "(master|main)" `
| %{ git branch -d $_.ToString().Trim() } | Get-GitBranch
}
# log表示
function Get-GitTree { & git log --graph --oneline --decorate }
New-Alias -Name lo -Value Get-GitTree -Force -Option AllScope
# -s ショートフォーマットで表示
# -b ショートフォーマットでも分岐情報や追跡情報を表示します。
function Get-GitStatus { & git status -sb $args }
New-Alias -Name st -Value Get-GitStatus -Force -Option AllScope
# 全部をaddするなら aa .
# -uのオプションもok
# git add -u (git add --update)
# バージョン管理されていて、変更があったすべてのファイルがaddされる
# バージョン管理されていないファイルはaddされない
function Get-GitAdd { & git add --all $args }
New-Alias -Name aa -Value Get-GitAdd -Force -Option AllScope
# 変更を見てからコミットメセージを編集&コミット
function Get-GitCommit { & git add --all | git commit -ev $args }
New-Alias -Name cm -Value Get-GitCommit -Force -Option AllScope
# コミット
# コマンドがかぶる時ビルトインのコマンドを消去
##### remove-item alias:gc -force
# 変更を見てからコミットメセージを編集&コミット
function Get-GitCommit { & git commit -ev $args }
New-Alias -Name gm -Value Get-GitCommit -Force -Option AllScope
# g co だと補完が効く
function Get-GitCheckout { & git checkout $args }
New-Alias -Name co -Value Get-GitCheckout -Force -Option AllScope
# ブランチ表示
function Get-GitBranch { & git branch $args }
New-Alias -Name br -Value Get-GitBranch -Force -Option AllScope
# function Get-GitPush { & git Push $args }
# New-Alias -Name gps -Value Get-GitPush -Force -Option AllScope
# function Get-GitPull { & git pull $args }
# New-Alias -Name gpl -Value Get-GitPull -Force -Option AllScope
# function Get-GitFetch { & git fetch $args }
# New-Alias -Name f -Value Get-GitFetch -Force -Option AllScope
# function Get-GitRemote { & git remote -v $args }
# New-Alias -Name r -Value Get-GitRemote -Force -Option AllScope