PowerShell を”いい子”にして、WSL から ”推し変”した
2021-02-19
azblob://2022/11/11/eyecatch/2021-02-19-switch-lover-from-WSL-to-PowerShell-000.jpg

 WSL を使って C ドライブ上のファイルを実行するとどうしても遅くなってしまうことを知り、 PowerShell に ”推し変” しようと決意しました。とはいえ、デフォルトの PowerShell は個人的には使いづらく感じてしまい推せる気がしなかったので、 PowerShell を自分好みの ”いい子” にして推す方法を選びました。

想定している対象読者

  • WSLと最近うまくいっていない方
  • PowerShellと仲良くなれない方
  • PowerShellと仲は良いけど、もっと仲良くなりたい方

とりあえず環境構築

  1. Windows Terminal のインストール

インストールは こちら から

2. 必要なフォントのインストール

 こちら から Cascadia Code PL または Cascadia Mono PL をインストールして、Windows Terminal のフォントとして設定する必要があります。設定は Windows Terminal を起動して「⋁」の部分をクリックした後、 「設定」 をクリックするとエディタが起動するのでこちらから設定します。

3. 下記コマンドを PowerShell で実行

Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')  # scoop のインストール
scoop install git # git のインストール
scoop install gsudo # gsudo のインストール
scoop install vim   # vim のインストール

# PowerLineのインストール
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
Install-Module -Name PSReadLine -Scope CurrentUser -Force -SkipPublisherCheck

4. $PROFILE.CurrentUserAllHosts (おそらく C:\Users\{{ ユーザー名 }}\Documents\WindowsPowerShell\profile.ps1 )に下記を追記

# Ctrl + dExit
Import-Module PSReadLine
Set-PSReadlineKeyHandler -Key ctrl+d -Function DeleteCharOrExit

# bash風のtab補完
Set-PSReadLineKeyHandler -Key Tab -Function Complete

# PowerShellPowerLineを適用するための設定
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox

5. Windows Terminal を起動 or 再起動

PowerShell 再起動後、”このシステムではスクリプトの実行が無効になっているため、...”と出る場合

 自分は Windows Terminal 起動後に下記のエラーが出ました。

. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\{{ ユーザー名 }}\Documents\WindowsPowerShell\profile.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ . 'C:\Users\{{ ユーザー名 }}\Documents\WindowsPowerShell\profile.ps1'
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

 これは PowerShell の実行ポリシーに起因するエラーらしいです。(詳しく知りたい人はググって下さい…)

 実行ポリシーを変更することで解決するので、下記コマンドを実行しました。

gsudo PowerShell Set-ExecutionPolicy RemoteSigned

インストールしたツールの紹介

Windows Terminal

 タブを複製でき、PowerShell は勿論のこと、 コマンドプロンプトも WSL も扱える便利な便利なターミナルソフト。UIも良くて好き。
 Ctrl + tab でタブ移動、 Ctrl + Shift + T  で新規タブを開く、といったキーボードショートカットもあって優秀。

 gsudo

 管理者権限でコマンドを実行するコマンド。UNIX のコマンドでいう sudo と su を混ぜた感じ。使い方は下記。

gsudo   # sudo su と同等
gsudo {{ コマンド }}   # sudo {{ コマンド }} と同等

vim

 言わずと知れたエディタ。管理者権限でファイルをいじるときに、CLI で使えるエディタがあると便利だと思ったのでインストール。emacs やほかのエディタでもいいと思うけど、僕は vim 派なので vim をインストールしました。
 ちなみに .vimrc は $VIM(おそらく C:\Users\{{ ユーザー名 }}\ )配下に格納すれば設定が反映されます。

PowerLine

 ターミナルの表示をかっちょよくするやつ。 実際に入れると下記画像みたいにディレクトリ・gitのブランチ を表示して、改行されたところからコマンドを打つ感じになります。

設定した内容の紹介

Ctrl + d で Exit

 Exit できるキーバインドがあるとPowershell終了するときや gsudo で管理者権限になった後に抜けるときにも便利だと思ったので設定しました。 Ctrl + d なのは Linux 系でこのキーバインドだからです。

 bash 風 tab 補完

 PowerShell の tab 補完が苦手なので bash 風の tab 補完にしました。ここは慣れてる補完を使ったほうが良いと思うので、好みに合わせたほうが良いと思います。ちなみにzsh風にするには下記のように記載します。

# zsh風のtab補完
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete

蛇足

 人生で初めて推し変をして、下2つのことを痛感しました。

  • 推し変するに至るまでには色々な葛藤がある
  • 未練があると推し変をした後でも推しのことを考えてしまう

 こんな思いはもう2度としたくないので、推し変するかもしれないような存在を推すことはせず、今の推しを全力で推そうと改めて思いました。