Windows TerminalでWindowsのターミナル環境を良い感じに整える


本記事は東京学芸大学 櫨山研究室 Advent Calendar 2020の六日目の記事になります.

はじめに

本記事はWindowsのターミナル環境を良い感じに整えるというものです.

なお本記事はターミナル環境にGit bashを押すため,

  • 「学生時代はmacを使っていたけど会社支給のPCはWindows…」
  • 「お金がないのでmacは買えないけどwindowsでmacOS/Linuxに近い開発体験がしたい!」

のようなことを考えたことがある方向けの内容になります,ご了承ください🙇‍♂️

概要

  • Git bashを使おう
  • Windows Terminalを使おう
  • PureLineでプロンプトを見やすくしよう
  • .bash_profile.bashrcを書こう

完成形

完成形としては以下の画像のようになります.

Git bashのインストール

Git bashはコマンドラインからgitを利用するためのbashエミュレータです.
Windowsに標準でインストールされているPowerShellもlinuxコマンド風の命令をサポートしていますがGit bashの方が使用感が断然良いです.
(まあbashなので当然なのですが…)

パッケージ管理ソフトウェアのScoopのインストールがインストールされていれば以下のコマンドでインストール可能です.

PowerShell
PS> scoop install git

Windows Terminal

Windows TerminalはMicrosoftが開発をしているターミナルソフトウェアです.
同じインターフェースでコマンドプロンプト,PowerShell,WSLのUbuntuに組み込まれているBash,Azure Cloud Shellなどを利用することができます.
これにより混沌としていたWindowsのターミナル環境を一つにまとめることができます.

[画像引用元] What is Windows Terminal?, https://docs.microsoft.com/ja-jp/windows/terminal/

Windows Terminalでは標準で画面分割などができます!

alt+shift++で右側に分割,alt+shift+-で下側に分割します.
alt+←↓↑→で分割した画面の行き来ができます.

Windows Terminalのインストール

Scoopをインストールしていればextrasバケットを追加した後にインストールすることが可能です.

PowerShell
PS> scoop bucket add extras
PS> scoop install windows-terminal

Windows TerminalでGit bashを使えるようにする

デフォルトではWindows TerminalはGit bashに対応していません.
設定ファイルを編集することで使えるようにします.

はじめにWindows Terminalを起動します.

windows terminalを起動した状態でctrl + ,を入力するとsettings.jsonがメモ帳で開かれます.
windows terminalではVSCodeと同様にsettings.jsonで設定の管理が可能です.

settings.jsonにGit bashの設定を追加するために調べておく必要がある情報は以下の3つです.

  1. bash.exeのパス
  2. Git bashのiconファイルのパス
  3. Git bashに割り当てるGUID

bash.exeのパスの確認

where bashコマンドで調べることができます.

Git_bash
$ where bash

なおScoopを使ってインストールしている場合はデフォルトで以下のパスになります,

C\Users\{ユーザー名}\scoop\apps\git\current\bin\bash.exe

Git bashのiconファイルのパス

Git bashのアイコンフィルはgit-for-windows.icoという名前になります.
Scoopを使ってインストールしている場合はデフォルトで以下のパスになります.

C\Users\{ユーザー名}\scoop\apps\git\current\mingw64\share\git\git-for-windows.ico

Git bashに割り当てるGUIDの取得

Windows Terminalでは新しいCUIを追加する際にGUIDを割り当てる必要があります.
GUIDはPowerShellで以下のコマンドで取得することができます.

PowerShell
PS> [guid]::NewGuid()

settings.jsonに追記してGit bashを利用できるようにする

上で取得した情報を元にsettings.jsonを編集していきます.
settings.jsonprofiles => list要素に以下のスキーマを追加します.

settings.json
{
  "guid": "{取得したGUID}",
  "commandline": "C:\\Users\\{ユーザー名}\\scoop\\apps\\git\\current\\bin\\bash.exe --login",
  "icon": "C\\Users\\{ユーザー名}\\scoop\\apps\\git\\current\\mingw64\\share\\git\\git-for-windows.ico",
  "name": "Git bash"
}

ここまでの設定をするとWindows TerminalでGit bashを起動することができます✨

きちんと起動していますね✨

ただ,このままだと使いづらいので設定を追加していきましょう!
以下の設定をします.

  1. デフォルトの起動ディレクトリをHOMEディレクトリにする
  2. exitコマンドでwindowが閉じるようにする
  3. タブ名をGit bashで固定にする
  4. ダークテーマにする

1と2は先ほどのsettings.jsonのスキーマに追加するだけでできます.

settings.json
{
  "guid": "{取得したGUID}",
  "commandline": "C:\\Users\\{ユーザー名}\\scoop\\apps\\git\\current\\bin\\bash.exe --login",
  "icon": "C\\Users\\{ユーザー名}\\scoop\\apps\\git\\current\\mingw64\\share\\git\\git-for-windows.ico",
  "name": "Git bash",
  "closeOnExit": true,
  "startingDirectory" : "%USERPROFILE%",
  "tabTitle": "Git bash",
  "suppressApplicationTitle": true
}

デフォルトでGit bashが起動する設定とダークテーマの設定はsettings.jsondefaultProfiletheme属性を編集します.
(themeはデフォルトではなかったので追記しています.)

setting.json
 "defaultProfile": "{取得したGUID}",
 "theme": "dark",

わかりにくいので追加位置のスクショを載せておきます.

Git bashのカスタマイズ

Git bashのプロンプトをカスタマイズします.
今回はPureLineを利用します.

[画像出典元] chris-marsh/pureline, https://github.com/chris-marsh/pureline

Cascadia Code PLフォントのインストールと設定

PureLineを正しく表示するためにフォントを追加しておく必要があります.
今回はMicrosfotが提供するCascadia Code PLフォントを使用します.
以下のリンクからダウンロードできます.

CascadiaCode-2009.22.zipをダウンロードして展開します.
otf/static配下のCascadiaCodePL-Regular.otfをクリックしてインストールします.

Windows TerminalのフォントをCascadia Code PLにする

settings.jsonprofiles=>defaultsにする設定は全てのターミナルで共通になります.

settings.json
  "fontFace": "Cascadia Code PL"

PureLineのインストール

PureLineをGitHubからcloneして適用します.

Git_bash
$ git clone https://github.com/chris-marsh/pureline.git
$ cp pureline/configs/powerline_full_256col.conf ~/.pureline.conf

以下のコマンドでPureLineを有効にできます.

Git_bash
$ source ~/pureline/pureline ~/.pureline.conf

.pureline.confの編集

.pureline.confを編集することで見た目を整えることができます.
例えば,PL_USER_SHOW_HOSTをデフォルトのtrueからfalseにすることでコンピュータ名を表示しないようにできます.

良い感じのプロンプトになりました✨

bash_profilebashrcの設定をする

bashではbash_profilebashrcを利用して色々と設定をすることができます.
bash_profileはログイン時にbashrcはインタラクティブモードのbashを起動する際に毎回実行されます.

  • 言語設定を日本語にする
  • winptyを有効にした状態でbashを起動する
  • PureLineを有効にした状態で起動する
  • エイリアスを設定しよう

言語設定を日本語にする

環境変数LNAGja_JP.UTF-8に設定します.
これはログイン時に設定すれば良いので.bash_profileに記述します.

bash_profile
# lang
export LANG=ja_JP.UTF-8

winptyを有効にした状態でbashを起動する

Git bashではPythonやMySQLなどの一部コマンドではwinptyを先頭につけないと実行できない.
この現象は標準入力や標準出力の文字コードが絡んでいるようです.

解決策としては.bash_profileでbashログイン時にwinpty bashとして起動してしまいます.

bash_profile
# winpty
exec winpty bash

PureLineを有効にした状態で起動する

先ほどは手動で行っていたpurelineの起動をbash起動時に有効にします.
こちらの設定は.bashrcに記述します.

.bashrc
# pureline
source ~/pureline/pureline ~/.pureline.conf

エイリアスを設定しよう

aliasはコマンドの別名です.
ここでは個人的にmacで便利だと思っている2つのコマンドを登録しておきます.

macを使っているとopenコマンドでディレクトリをFinderで開くことがあります.
これに近いwindowsのコマンドとしてexplorerがあります.
そこでaliasを貼ることで近い使用感にすることができます.

pbcopyは標準出力の内容をクリップボードに流せるmacのコマンドです.
windowsだとclipコマンドが近い動きをします.

.bashrc
# mac風のaliasを設定する
alias open='explorer'
alias pbcopy='clip'

以上で完成です!

おわりに

今回はwindowsのターミナル環境を良い感じにする設定を紹介しました.

ターミナル環境は開発者一人ひとりで好みが異なると思いますので,各々で弄って理想の環境に近づけていきましょう💪