3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShellをもっとかっこよく(=より便利に)する!

Posted at

Prologue

最近、自分は何事にも興味が薄れるという、人間にあってはならない事態が発生しておりました。
そのせいか人生の色もモノクロになりつつあり、楽しみが無くなっていきました...

なんか面白いことないかな~とYouTubeで動画をあさっていたら、

「Windows PowerShell をかっこよくしよう!!!!」 (実際は英語だった)

という動画を見つけました。
見てみると、

え、めっちゃかっこええ...(おめめキラキラ~✨✨)
自分もこんなにキーボードカチカチ鳴らしてすごいことしてみたい!!!

と思い、この動画の通り(一部他の方の記事を参考にしながら)に、私のターミナルをCool✨にしてみました。

そしてこの記事は、私が実際に行ったターミナルのUI変更の、議事録としてここに残させていただきます。
この記事を読んでいただければ、もしかしたらどのPCでのターミナルをCool✨にすることも、過言では...ないかもしれません!!()

Goals

主な目的は「Oh My Posh を操る」ことですが、サブとしてPowerShellで大事というか、PowerShellに入れとくと便利なものも同時に紹介しております。

これを踏まえて、この記事の目的を次に記します。
(太字は記事の主題であることを表します)

PowerShell全般

  • Oh My Posh を用いて Windows PowerShell の外観をカスタマイズする
  • PowerShellのプロファイル( $PROFILE )の作成を行う、編集する
  • PSReadLine を用いてコマンド入力時の予測検索を行う
  • z を用いてファイル名のあいまい検索を行う
  • Terminal-Icons を用いて、'ls' コマンドなどファイル列挙の際のアイコンの付与およびカラーリングを行う。
  • Fzf を用いて、コマンド検索をもっと簡単にする

Neovim全般(任意)

筆者はテキストエディタにおいて、Neovimを使用しているためにこの工程を行いました。ただしこれは好みなので、任意としております。
また、テキストエディタで Notepad (Windows標準のメモ帳)を用いている場合はこの工程を行う必要はありません。

  • 行番号をハイライトする
  • 背景色をPowerShellの設定のままに行う
  • 上と同時に、文字色のみを適用したカラースキームに従うように設定する

その他

次の目的は、"ローカルユーザ名が日本語である" 場合の参考にしてください。元から英語である場合は省略して構いません。
(筆者のユーザ名が日本語であるため、この工程を追記しております)

  • PowerShell全体の文字コードを変更する。つまりコマンド実行ファイルの文字コードも変更される(ただ、未検証...)

Environment

設定当時の実行環境は次のようになります。

  • Windows 11 Home (23H2)
  • PowerShell 1.21.2911.0
  • Neovim v0.9.5

Attention!!

この記事の注意点を以下に示します。

  • 既にPowerShellが導入されているものとします。つまりPowerShellの導入などは省略しております。
  • Neovim本体の設定、およびプラグインマネージャーのインストールなど(記事の主題に直接関与しないもの)も省略しております。
  • パソコンのメモリ領域が十分にあるものとします。メモリ領域が極端に小さいなどの場合は、Oh My Posh ではなく Starship など、より軽い方のソフト?をインストールすることが良いとされて...いるらしいです(すいません根拠はないです)
  • (こう言っておりますが、メモリ領域のことは何もわかりません。。。)
  • ファイル構造など、厳密な動作の記述は省いております。あくまでカスタマイズを行うまでの雰囲気をつかむものとして捉えますよう、お願いします。

Production Process

ざっくりした工程は次のようになります。ただしインストール工程は、実際の動作確認を追記しております。

  1. Nerd フォントを公式サイトからダウンロードし、インストールする
  2. Terminalの既存プロファイルを Windows PowerShell に設定する、その他外観の設定をする
  3. PowerShell の管理者権限を付与する
  4. PowerShell のプロファイル( $PROFILE )の存否を確認し、なければ作成する
  5. Oh My Posh をコンソール上でダウンロードし、インストールする
    5.5. (ローカルユーザ名が日本語の場合) PowerShell の文字コードを変更する
  6. Oh My Posh のテーマを適用する
  7. PSReadLine をインストールする
  8. z をインストールする
  9. Terminal-Icons をインストールする
  10. Fzf をインストールする

※次の工程は説明しませんが、Neovim使いなら行ってみた方がよいと思われます。最後にある参考記事をご参照ください。

  • 背景色をPowerShell標準のままで、文字色をカラースキームのままに設定する
  • 行番号をハイライトする

では、説明していきます。

1. Nerd フォントを公式サイトからダウンロードし、インストールする

Nerd フォントは、Oh My Posh に適用するために必要なフォントのようです。そのためこのフォントをPCにインストールする必要があります。

:

まず、Nerd Font 公式サイトに飛び、「Downloads」をクリックします。その後さまざまな種類のフォントが表示されますので、好きなフォントを選び、「Download」をクリックしてください。すると、自動的にダウンロードが開始されます。

次にダウンロードしたフォルダを( 7-zip などで)解凍し、解凍されたフォルダの中にある .ttf ファイルをクリックし、インストールを行います。

いくつか該当する .ttf ファイルがありますが、好きなもので構いません(多分)。今回筆者は Proto が含まれているものをインストールしました。

この工程を終えると、システムに Nerd フォントが適用できるようになるはずです。

2. Terminalの既存プロファイルを Windows PowerShell に設定する、その他外観の設定をする

次に、Terminalの設定を行います。このときはまだ、管理者権限は必要ありません。

また記事に書かれている設定の際で (必須) と書かれたもの以外は、すべて任意です。設定しなくても構いませんが、設定すればもっとCool✨になります多分。

:

まずターミナルであるコマンドプロンプトを起動します。これは Ctrl+R のショートカットキーでも、普通にソフトから開いても構いません。

その後 Ctrl+, のショートカットキーを用いるかして、ターミナルの設定を開きます。このとき、次のような設定を行ってください。

  • 既存のプロファイル : Windows PowerShell

次に、設定の「プロファイル」欄にある Windows PowerShell を開きます。開いた後、下の方に「外観」があるので、クリックします。その後、次のような設定を行ってください。

  • フォントフェイス : {適用する Nerd フォントの名前} (必須)
  • 背景の不透明度 : 30%
  • アクリル素材(Acrylic)を有効にする : ON

以上の設定を終えたあと、右下にある「保存」をクリックして設定を適用させてください。

こうした後、PowerShell を開くと背景とフォントがちょっと良くなった...?✨ように見えます。

3. PowerShell の管理者権限を付与する

これは、多分先ほどの設定で「このプロファイルを管理者として実行する」をONにすればいいだけの話なのかもしれませんが、一応。
コマンドライン上で管理者権限を付与する方法を説明します。

※以下、コマンド入力の際に表示される PS C:\Users\...> のローカルユーザ名を Latte としています。実際の筆者のユーザ名とは違うのでご安心を。

:

PowerShell において管理者権限を付与する場合は、次のようなコマンドを実行します。

PS C:\Users\Latte> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

-Scope CurrentUser は、カレントユーザ(現在PCにログインしているユーザ)のみに管理者権限を付与することを意味するようです。たぶん。つまり、この部分は任意です。

  • RemoteSigned は管理者権限のことのようです

現在の管理者権限の状態を確認するためには、次のコマンドを実行します。

PS C:\Users\Latte> Get-ExecutionPolicy -List

-List は全体の権限を確認するためのものであり、カレントユーザのみを確認するならこの部分を省略しても構いません。たぶん。

管理者権限を簡単に付与することになりますが、付与する対象者によっては悪意のあるプログラムを実行させることを許可してしまう場合があります(未検証)。CurrentUser だとしても安心はできないようですが...工程を行う分には安心してもらって大丈夫です!!!

こうしてカレントユーザに管理者権限を付与することができました。

4. PowerShell のプロファイル( $PROFILE )の存否を確認し、なければ作成する

PowerShell の外観をカスタマイズするのに欠かせない

...というよりも、PowerShell 全体の設定を適用するために欠かせないプロファイル $PROFILE ※を作成します。

※vimでいう、init.vim に相当します。

:

まずプロファイルの存否を調べます。次のコマンドを入力します。

PS C:\Users\Latte> Test-Path $PROFILE

Test-Path はパスの存在有無を確認するもので、存在するなら True 、しないなら False を返します。True の場合なら、次に示す工程を飛ばして、$PROFILE を編集してください。

入力の結果、False が返ってきた場合はプロファイルを作成します。そのため、次のコマンドを入力します。
※プロファイル作成場所はなるべく C:\Users\{ユーザ名}\Document\WindowsPowerShell\ に追加するとよさそうです。このディレクトリが無い場合は自分で作成してください。

PS C:\Users\Latte> New-Item -Path $PROFILE -Type File -Force

こうすると、プロファイルが作成されたときの結果の詳細が出力されます。この後にまた Test-Path を行うと、結果は True になります。

以上の工程により、PowerShell のプロファイル $PROFILE を作成することができました。

:

じゃあ早速 Oh My Posh を...と、行きたいところですが、待って!!
開いたときの管理者権限を付与しないといけないことに注意してください!!

つまり、作成したプロファイル $PROFILE に以下を追記してください。これは先ほど示した管理者権限を付与するコマンドとまったく同じものです。

# カレントユーザに管理者権限を付与
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

これを追記する意味は、後ほど用いる Install-Module などで用いられます。たぶん。

5. Oh My Posh をコンソール上でダウンロードし、インストールする

ではここからやっっっっと本題に入ります。Oh My Posh をインストールします。ここでは winget を用いて適用します。

:

Oh My Posh をインストールするため、次のようにコマンドを入力します。

PS C:\Users\Latte> winget install JanDeDobbeleer.OhMyPosh -s winget

すると色々な表示がされると思いますが、少し待って install successfully! みたいな表示がされたらインストール完了です。しかし Oh My Posh のテーマ適用にまでは至っていません!!

上のコマンド実行後、$PROFILE をテキストエディタで開き、次の文を追記します。

# Oh My Posh のテーマを適用する
oh-my-posh init pwsh | Invoke-Expression

そして、$PROFILE を再起動します。これは次のコマンドを、PowerShell 上に入力するとできます。

PS C:\Users\Latte> . $PROFILE

ただしこれは、管理者権限を付与してからこの実行を行ってください。(でないとエラーになります)

すると、コマンドプロンプトが何かCool✨になっていると思われます。
ここでエラーが出る場合(特にパス名に日本語が含まれていて文字化けしている場合)は、5.5 を参照してください。

5.5 (ローカルユーザ名が日本語の場合) PowerShell の文字コードを変更する

パス名に日本語が含まれていて文字化けしている場合、ディレクトリを参照することができません。そのための有効な手段として、文字コードの変更があります。ここでは PowerShell の文字コードを変更します。

PowerShell上で、chcp を用いて文字コードを変更します。次のコマンドを実行します。

PS C:\Users\Latte> chcp 932

932 について、これはコードページ識別子を表すようです。これは以下に示す識別子一覧を参照し、適宜文字コードを変更することをおすすめします。

(当時の筆者の環境では、65001 (UTF-8) でした。日本語が文字化けするわけです...)
この設定を終えた後、エラーが消え、綺麗にテーマが適用されているはずです。

6. Oh My Posh のテーマを適用する

Oh My Posh をインストールし終えたら、好きなテーマを適用しましょう!!

:

まず、Oh My Posh のテーマは $env:POSH_THEMES_PATH パスのフォルダにすべてのテーマが格納されているようです。なので、一回この一覧を表示させます。次のコマンドを実行します。

PS C:\Users\Latte> ii $env:POSH_THEMES_PATH

するとフォルダの中身が表示されるはずです。これらの .json ファイルはテーマを適用する際に必要なものですが、ここから好きなものを一つ選んで、適用させます。

が、さすがに人間なのでこのファイルの中身見て「あ、これかっこいい!これにしよ!!」とはいきません。そうできたら天才です。

そのために、まず全テーマを表示させてみます。次のコマンドを実行します。

PS C:\Users\Latte> Get-PoshTheme

これを実行すると、すーごい速さで各テーマを適用した場合の表示がされます。その中で、良いのを選びましょう!!

適用したいテーマが決まったら、$PROFILE において 5. で設定した Oh My Posh 起動プロファイルを、次のように変更します。

# テーマを適用する
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH/{適用したいファイルのjson}.json | Invoke-Expression

そして $PROFILE を再起動してみると、なんと!!よりCoooooool✨✨な見た目になりました!!

以上が Oh My Posh でコマンドラインを彩る方法になります。
※再起動した後にエラーが出る場合がありますが、これは後述する PSReadLine をインストールすればエラーが出なくなると思われます。

7. PSReadLine をインストールする

ここまでは、主にターミナルの外観をカスタマイズしました。ここからはターミナルの便利機能を追加していきます。まず、入力する際の予測検索を行うように設定していきます。

PSReadLine をインストールします。

:

まず、次のようなコマンドを実行します。

PS C:\Users\Latte> Install-Module -Name PSReadLine -AllowClobber -Force -Scope CurrentUser

もうなんかコマンドが既にかっこいいですね。

管理者権限が元から付与されているなら -Scope CurrentUser は省略可!

-AllowClobber ですが、これは...私がよくわかっていません()
すでにインストールされているようですが、多分バージョンを最新にするため...?

もちろん、PSReadLine にもバージョンがあり、最新( 2.2.x 以上)にしなければ次に示す予測検索を使用することができません。そのため、次のコマンドを実行してバージョンを確認します。

PS C:\Users\Latte> Get-Module -Name PSReadLine

ちなみにこれを実行すると、バージョンのみならず適用可能なコマンド群(ExportedCommands欄)が表示されます。

バージョンが 2.2.x 以上であれば次に進み、それ未満である場合は PSReadLine のアップデートを、上のコマンドをさらに実行して行ってください。

その後、次のコマンドを実行します。これはコマンド入力の際に予測検索を行うためです。

PS C:\Users\Latte> Set-PSReadLineOption -PredictionSource History

これを実行してエラーが出なければ、導入完了です。後は、これと全く同じコマンドを $PROFILE に追記すれば、常時予測検索を行うことができるようになります。

さらに PSReadLine を使って、予測変換一覧を表示させることができます。次のコマンドを実行します。

PS C:\Users\Latte> Set-PSReadLineOption -PredictionViewStyle ListView

これを実行し、なんらかのコマンドを入力すると、下側に予測変換一覧が表示されます。これも $PROFILE に記述しておけば常時使用可能になります。

:

:

ここまでの $PROFILE のファイルの中身は次のようになります。(一例です)

$PROFILE
# Location(プロファイル起動初期ディレクトリを変更できますが、変えなくても構いません)
Set-Location C:\Users\Latte

# Ailas(エイリアス: 命令を別名で登録できます)
# 筆者はnvim使いなので、vim を nvim として登録してます
Set-Alias nvim vim

# カレントユーザに管理者権限を付与
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# Oh My Posh のテーマを適用する
# oh-my-posh init pwsh | Invoke-Expression

# ↑を次に変更し、選んだテーマを適用する
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH/{適用したいファイルのjson}.json | Invoke-Expression

# 予測変換を適用する
Set-PSReadLineOption -PredictionSource History

# BellStyle...?(ごめんなさいわかってません)
Set-PSReadLineOption -BellStyle None

# 予測変換一覧を表示する
Set-PSReadLineOption -PredictionViewStyle ListView

8. z をインストールする

この記事も佳境に入ってきました。次に z をインストールします。

z は、もともとは Linux で用いられている z コマンドを移植したようなものになっているようです。ZLocation とも呼ばれるようで、このコマンドを使用することでディレクトリを記憶し、簡単にそのディレクトリにアクセスできる、といったもののようです。

ということで、便利そうです()
インストールしてみましょう。

:

次のコマンドを実行します。(これも管理者権限が必要だと思われます)

PS C:\Users\Latte> Install-Module -Name z -Scope CurrentUser -Force

ここでエラーが出た場合は、エラー表示の通りに従ってください...(2回も導入してるのに覚えてないすみません!!)

NuGetプロバイダーがどうたらこうたら...の、表示が(もし)されたら、Y を入力していってください。その結果、無事にインストールが完了されたら、大丈夫です!!

このインストールの時、PCに導入されているセキュリティソフトによっては必要なファイルのダウンロードが省略され、正常にインストールできないことがあります。
その場合はセキュリティソフトの警告表示に従って、このインストールだけ監視プロセスの除外を行ってから、再度インストールをしてみることをおすすめします。
(筆者はこれを実際に体験しました)

Tips: z を実際に使ってみる

例えば C:\Users\Latte\Document\WindowsPowerShell\ に、$HOME (= C:\Users\Latte\ ) から移動してみます。まず、次のように cd コマンドを打ちます。

PS C:\Users\Latte> cd C:\Users\Latte\Document\WindowsPowerShell\
PS C:\Users\Latte\Document\WindowsPowerShell>

このときに、z windowspowershell と入力してみます。すると、z の格納テーブルにこのパスが格納されます。これにより、例えばまた $HOME に戻ってまた移動してみましょう。

PS C:\Users\Latte> cd C:\Users\Latte\Document\WindowsPowerShell\
PS C:\Users\Latte\Document\WindowsPowerShell> z windowspowershell
PS C:\Users\Latte\Document\WindowsPowerShell> cd $HOME
PS C:\Users\Latte> z win
PS C:\Users\Latte\Document\WindowsPowerShell>

おわかりでしょうか...?
cd はパスを正確に入力しないといけない?のに対し、z はたった 3 文字でディレクトリ移動できるようになります!!!
これが、z の恩恵といったところなのでしょうか...!?(にわかですすみません)
ただフォルダ名が重複すると面倒かもしれません...(未検証ですすみません)

9. Terminal-Icons をインストールする

カスタマイズの極めつけ、ファイルのアイコンを表示させます。

※ここからテーマを適用した後は PS C:\Users\Latte> も表示されなくなることがありますが、ここでは一応加えて記しておきます。

インストール方法は Install-Module コマンドか Scoop を用いる、の方法が挙げられます。それらのコマンドを次に示します。

Install-Moduleを用いる場合
PS C:\Users\Latte> Install-Module -Name Terminal-Icons -Scope CurrentUser -Force
Scoopを用いる場合
PS C:\Users\Latte> scoop install terminal-icons

Terminal-Icons の具体的な説明は次の公式サイトをご参照ください。

こうして、例えば $HOMEls コマンドを実行すれば、ファイルのアイコンと名前のカラーリングが行われていると思われます。さらに、Coolですね...✨✨✨

10. Fzf をインストールする

Fzf を導入することで、コマンド検索をもっと簡単に行うことができるようです!

まず、次のコマンドを実行し、Fzf をインストールします。Scoopがインストールされてない場合は、こちらの公式サイトなどを参照しながらインストールを行ってください。

PS C:\Users\Latte> scoop install fzf

その後、Fzf をPowerShellで利用するために、次のコマンドを実行します。

PS C:\Users\Latte> Install-Module -Name PSFzf -Scope CurrentUser -Force

これでインストールは完了です。次にこれを適用します。

Fuzzy Finder と呼ばれるようですね、Fzf は(無知ですすみません...)
次のコマンドを実行することで、Ctrl+f でパス検索、Ctrl+r で検索履歴を表示させることができるようになります。

PS C:\Users\Latte> Set-PSFzfOption -PSReadlineChordProvider 'Ctrl+f' -PSReadlineChordReverseHistory 'Ctrl+r'

おぉ、便利になりました...✨✨✨
( $PROFILE に書き込む場合は、Import-Module を行う必要があります。後述しております)

ここまでの $PROFILE

おつかれさまでした。以上でかっこよくする工程は終了となります。
ここまでの $PROFILE の一例を次に示します。参考にしてください。

$PROFILE
# Location(プロファイル起動初期ディレクトリを変更できますが、変えなくても構いません)
Set-Location C:\Users\Latte

# Ailas(エイリアス: 命令を別名で登録できます)
# 筆者はnvim使いなので、vim を nvim として登録してます
Set-Alias nvim vim

# カレントユーザに管理者権限を付与
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# Oh My Posh のテーマを適用する
# oh-my-posh init pwsh | Invoke-Expression

# ↑を次に変更し、選んだテーマを適用する
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH/{適用したいファイルのjson}.json | Invoke-Expression

# 予測変換を適用する
Set-PSReadLineOption -PredictionSource History

# BellStyle...?(ごめんなさいわかってません)
Set-PSReadLineOption -BellStyle None

# 予測変換一覧を表示する(PSFzfを用いる場合は省略可?)
# Set-PSReadLineOption -PredictionViewStyle ListView

# Fzf をインポートし、Ctrl+f でパス検索、Ctrl+r でコマンド履歴を表示させる
Import-Module PSFzf
Set-PSFzfOption -PSReadlineChordProvider 'Ctrl+f' -PSReadlineChordReverseHistory 'Ctrl+r'

(もっと深く調べると、もっとたくさんのコマンドを書いている方もいる...と思われます!)

Epilogue

以上、ターミナルをもっとかっこよく(より便利に)する方法を説明しました。どうでしたでしょうか?
私がこれを学んで言えることは、

「私は、ターミナルの力を、いまだ 100% 出し切れていない!!」

ということでした。外観カスタマイズの他に、なんかCPUの最適化を変更することもできたり、実は色々なことができたりするんですよね、PowerShell は。それもいつかやってみたいけど、OSに詳しくない私がやったら大変なことになりそう...()

今回紹介した Oh My Posh などは、自分で .json ファイルを自作して適用することもできるようです。素晴らしい時代になったものです、ほんとうに。

:

でも、実をいうと、もっと調べてみたところ、一番最初に話した Starship の方が、カスタマイズが簡単にできるという噂を聞いたことがあります。

むむむ...まぁでもこれは仕方ないことであって
私がインスピレーションを受けたのはあるYouTubeの動画であって、実際にカスタマイズを行おうとしたときはそれしか頭になかったもので。。。。

でも!!!
こうやって簡単に(?)ターミナルをかっこよくできることを知れたので、すごく嬉しかったです!!
だから、もっとカスタマイズのことを勉強しようと思いました。

もう、やっぱり何事も「自作」って本当に自由自在に操れるようになるので、好きです(愛の告白)

Thanks💚

ここまで読んでくださった方々。本当に、ありがとうございました。
またこういう長編記事を書くとは思わんかった...

でも熟読してくれた方は、もう、カスタマイズの初歩をマスターしたと言っても過言ではないでしょう!!!たぶん

:

素敵なPowerShellライフを!💻

以上まっちゃラテ🍵でした!では、また。

参考記事

Oh My Posh など PowerShell 上の設定に関して

Neovim に関して

:

この記事を書こうと思った理由
この方のかっこよさに憧れを抱いたから

  • [YouTube] How to set up PowerShell prompt with Oh My Posh on Windows 11
    ※この方の動画では、where コマンドと呼ばれる実行元ディレクトリを検索するものがあるらしいですが、具体的なアドレスを教えてくれないようなので、それを実際に表示させる which ユーティリティも実装しているようです。ぜひ見てみてください。

:

あ、一応 which コマンドの代わりがあるらしいですね...
まぁお好きな方を使うことにします。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?