tech.guitarrapc.cóm

C#, PowerShell, Unity, Cloud, Serverless Technical Update and Features

PowerShell ISE 3.0でコードラインの上下入れ替えをショートカットコマンドで行いたい

PowerShell 3.0ではPowerShell ISEも機能追加されています。 今回はISE 3.0のツールバーにはない隠し機能を一つ紹介します。 なお、ISE2.0以前ではできませんのであしからず。

目的

PowerShell ISEでコードを書いていて、現在のラインにあるコードを直下の行と入れ替えたい時に利用します。 通常であれば、コード行を選択してカット、入れ替えたい上/下の行でペーストです。

コマンド

至って簡単です。 このコマンドを入れ替えたい行にカーソルがあるときに押します。
Alt+Shit+T
すると、直下行という制限付きですがコマンド一つで入れ替えが出来ます。

サンプル

以下のコードを用意しました。
Get-Item #1
Get-Process #2
Get-Alias #3
Get-AppxLog #4
Get-Alias #3の位置で、Alt+Shit+Tを押すとGet-AppxLog #4と位置が入れ替わります。
Get-Item #1
Get-Process #2
Get-AppxLog #4
Get-Alias #3
たとえば以下のサンプルコードでも、インテンドも考慮して入れ替えしてくれるので楽です。 以下の位置でAlt+Shit+Tを実行すると "FullPath `t: " + $directory + $fileName
Get-ChildItem `
    | ForEach-Object {

    $directory = $_.Directory
    $fileName = $_.Name

    "FullPath `t: " + $directory + $fileName
    "File Name `t: " + $fileName

    } `
    | sort
直下の "File Name `t: " + $fileName とインテンドを含めて行が入れ替わっています。
Get-ChildItem `
    | ForEach-Object {

    $directory = $_.Directory
    $fileName = $_.Name

    "File Name `t: " + $fileName
    "FullPath `t: " + $directory + $fileName

    } `
    | sort
残念ながら直上のラインと入れ替えするコマンドがないのが…

参照

#PSTip Transposing lines in PowerShell ISE