パンの木を植えて

主として数学の話をするブログ

【まとめ】PowerShell 7を使ってターミナル環境をモダンにする

\[ %%% 黒板太字 %%% \newcommand{\A}{\mathbb{A}} %アフィン空間 \newcommand{\C}{\mathbb{C}} %複素数 \newcommand{\F}{\mathbb{F}} %有限体 \newcommand{\N}{\mathbb{N}} %自然数 \newcommand{\Q}{\mathbb{Q}} %有理数 \newcommand{\R}{\mathbb{R}} %実数 \newcommand{\Z}{\mathbb{Z}} %整数 %%% 2項演算 %%% \newcommand{\f}[2]{ \frac{#1}{#2} } \]

直近のターミナル関連の記事の内容をまとめておきます.

前提

  • Windows 10 または 11

  • GitBash などの Git のCLIツールを使ったことがある程度の予備知識

  • 目標として,次の機能を導入したい

    • GitBash ライクな,コマンドごとに空行がはいるレイアウト.
    • コマンドのTabキーによる自動補完
    • ターミナルのウィンドウをタブで管理する
    • Git リポジトリを認識して,ブランチを表示する

手順

Windows Terminal を導入する

Microsoft が作った純正ツールである,Windows Terminal を導入します.

すでに導入されているかどうか確認するには,「ターミナル」でシステム内を検索します.タスクバーにある虫眼鏡から検索してください.

導入されていなかった場合には,マイクロソフトストアからDLします.

この時点で,以下の機能が手に入ります.

  • 配色テーマを変更する機能

  • ウィンドウの不透明度をいじる機能

  • 複数のターミナルウィンドウをタブで管理する機能

Windows Terminal を開いたところ

GitBashをWindows Terminal から開くこともできます.ただし少し設定が必要な場合がありますので,それは調べてやってみてください.

PowerShell のバージョンアップ

PowerShell を開いて,バージョンを確認してください.どうすれば良いかというと,$PSVersionTable と打って実行すればよいです.

PSVersion という行に表示されているのが,実行している PowerShell のバージョンです.

最新版を確認するには,GitHub の PowerShell のリポジトリ に飛んで Releases のところの数字を見てください.

最新版のほうが新しい場合には,当該リポジトリの Get PowerShell のテーブルからダウンロードしてください.

インストールが終了した後で Windows Terminal を再起動すると,プロファイルに黒い PowerShell が追加されています.それを開いて,再度 $PSVersionTable を実行してみましょう.

アップデートされているはずです.

この時点で,いくつかモダンな機能が備わっています.

  • ls コマンドを実行したときの列名が色付けされる

  • Tab によってディレクトリ名やファイル名,コマンド名を補完することができる

確認してみましょう.

PowerShell 7を開いたところ

Predictive IntelliSense を有効化する

PowerShell のバージョンを最新のものにしたので,Predictive IntelliSense が使えるようになります.

code $PROFILE ( code の部分は任意のテキストエディタでかまいません.notepad でも可) を実行して,PowerShell のプロファイルを VSCode で開きます.

そして,末尾に

Set-PSReadLineOption -PredictionSource History

を追加します.

これで履歴ベースの入力補完が使えるようになります.使い方は,入力中に暗めの文字で入力予測がでたら キーを押して確定するだけです.

autocomplete

さらなるカスタマイズ

すでにだいぶモダンになっています.git のコマンドも使うことができます.試しに git status とか打ってみてください.

しかし,ここで止まる道理はありません.さらにカスタマイズしていきましょう.

ターミナルのカスタマイズにはいろんな選択肢があって,私の知る限り有力なものとして

  • Starship

  • Oh My Posh

などがあります.

どちらが良いかは趣味ですね. Oh My Posh のほうは マイクロソフトによるドキュメントで採用されていますが,Starship のほうが GitHub でのスターが多いです.

ここでは両方紹介しようかと思います.

Nerd Font 導入

いずれにせよ今後必要になるので,Nerd Font を導入します.Nerd Fontの中にもいろんなフォントがあるので,好きなのを選びましょう.私は Starship の README に書いてあった FiraCode Nerd Font にしました.

DLしたら,このフォントをインストールします.方法は例によって Microsoft のドキュメント に書かれています.ここでは C:\Windows\Fonts に解凍したフォントのファイルをそのまま貼り付ける方法を採用します.

これで Windows にフォントが入りました.さらに Windows Terminal にもインストールします.これは,PowerShell のプロファイルを開いてフォントフェイスを変更すればいいだけです.失敗する場合は,一度 Windows Terminal を再起動してください.

フレームワーク導入

ルート1: Oh My Posh

では Oh My Posh ルートの説明をします.

Oh My Poshのドキュメント を読みながらインストールをします.まずは

winget install JanDeDobbeleer.OhMyPosh -s winget

というコマンドを実行し,インストールします.(結構時間がかかるので気長に待ちましょう)

インストールしただけではまだ適用されません.

code $PROFILE

というコマンドを打ちまして,PowerShell のプロファイルを VSCode で開きます.公式ドキュメントでは notepad (メモ帳) で開くことになっていますが,メモ帳だと「そのパスのファイルはない」と言われることがあります.たぶんメモ帳でも何か設定すれば開けると思いますが.

ここまで設定したら ターミナルを再起動します.こんな感じになっていれば成功です.

Oh My Posh を適用したところ

ルート2: Starship

Starship のほうも見ていきましょう. Starship の GitHubリポジトリ に書いてある通り,

winget install --id Starship.Starship

を実行します.

次にやることは Oh My Posh のときと同じで,code $PROFILE からプロファイルの編集をします.

Invoke-Expression (&starship init powershell)

を末尾に付け加えるだけです.(保存するのを忘れないように)

その後にターミナルを再起動すると,こんな感じになります.

Starshipを適用した様子

Oh My Posh と Starship 比較

この辺りは趣味の範疇ですが,デフォルトの状態では Starship のほうが見やすいと思います.

コマンドと,コマンドの実行結果の間に自動で空行を入れてくれたりするのが親切ですよね.あとOh My Posh はちょっと色がくどい感じがします.

まあ自力でカスタマイズすればいい話なんですが,ターミナルのカスタマイズってけっこうな沼なので,あまり深入りしたくないという人が多いんじゃないかなと思います.