20
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSL環境に fish shell を入れたらいい感じのターミナルになった

Last updated at Posted at 2022-03-07

背景

年明けから会社でWSL2(Ubuntu) 環境で開発を行うことになり、shellを使う機会が多くなりました。

モブプロをやっている時に、先輩の画面を見て変わったプロンプトだなと思って聞いてみたら、
fish shell なるものだと教えてもらったので、試しに入れてみました。

自分用メモを兼ねてまとめてみます。

使用感

まだ使い始めてから3日くらいしか経っていませんが、今までデフォのbashしか使っていなかったのでとっても便利!と感じました。

具体的には以下の点が良かったです。

  • デフォルトで強力な補完が使える
  • プラグインの追加が楽(これは最近の他のshellではそうかもですが)
  • インストールからいい感じの見た目になるまでの手順が楽

ちょっとした手順で画像のような見やすいターミナルになりました!
プロンプト目標.png

ただ、若干文法が異なるようなので、そこだけは要注意です。

前提

以下の環境でセットアップしました。

  • Windows WSL2(Ubuntu)
  • Homebrewはインストール済み

Windows10 でも Windows11 でもどちらでも今回紹介する手順でセットアップできます。(若干画面操作の経路は異なります)

セットアップ

検索すると結構Mac向けの記事が多いのですが、wslの記事だとだとフォント周りがやや面倒くさいです。

先ほど紹介した見た目にすることをゴールに進めていきます。

fish のインストール

任意のフォルダで以下コマンドでインストール。

brew install fish

fish のバージョンの確認。
fish と入力してバージョンが表示されればOKです!

fish -v
fish, version 3.3.1

早速 fish と入力して fish shell に入りましょう。

fish

この時点で補完が効くようになっているので十分便利です。

プロンプトの見た目をいい感じにする

デフォルトだとカレントディレクトリがわかりづらかったり、Git のブランチが表示されないので、
ここからはいい感じの見た目にしていきます。

fish を起動した状態で fish_config を実行するとブラウザが起動し、ブラウザ上で配色テーマをはじめとする様々な設定が行えます。
それでも十分にいい感じのみためになりますが、今回はプラグインを入れて見た目を変えていきましょう。
(ちなみに、設定ファイルをいじくり回せば、もっと自分好みの細かいカスタマイズができるようです。)

fisher(プラグインマネージャー)のインストール

まずはプラグインを管理するツールを入れます。
いろいろあるようですが、 fisher(フィッシャー) が良さそうだったので今回はこれを使います。

curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

テーマを設定

fisher install oh-my-fish/theme-bobthefish

試しに、Git で管理しているプロジェクトに移動してみましょう!
Git のブランチがいい感じに表示されていると思います。

なお、この時点では以下のように文字化けしています。
文字化け.png

文字化けを解消

以下のそれぞれで開く際の文字化けを解消します。

  • WSLのUbuntuのターミナル
  • Windows Terminal
  • VSCodeのターミナル
事前準備

Windows上にフォントをインストールします

  1. Cicaのプロジェクトから最新のものをダウンロードして任意のフォルダに解凍
  2. Windowsのスタートの検索ボックスで「フォント」を検索 > 「フォント設定」を開く > 解凍したファイルの .ttf 拡張子のもの(複数あります)をドラッグアンドドロップ
    フォントインストール.png
WSLのUbuntuのターミナルの設定変更

Windowsの検索ボックスからUbuntuのターミナルを起動します。
タイトルバーを右クリック > プロパティを開く > フォント からCicaを選択して「OK」

フォント選択_ubuntu.png

fish を開くと文字化けが直っています。
すでに fish をひらいている場合は一度 exit で fish から出て、入り直してください。

Windows Terminal
1. Windows Terminal を起動します。
2. タブの末尾のVのようなマークをクリックして「設定」を開きます
3. 画面左したの歯車アイコンをクリックします(初回はどのプログラムでファイルを開くか聞かれます。)

WindowsTerminal設定選択.png

4. 設定ファイルを編集します。

指定したエディタで json ファイルが開きます。
profiles > list に色々なターミナルの設定があるので、その中の Ubuntu の設定の末尾に , を追加して、その一行下に "fontFace": "Cica" を追加して保存してください。
WindowsTerminalプロファイル設定.png
※2022年11月6日追記
追記時点では fontFace 属性は非推奨となっているようです。
元々 "fontFace": "Cica" で設定していたものを、以下のように設定した方がよさそうです。
参考 : Windows ターミナルでの外観プロファイル設定

"font": {
  "face": "Cica"
}
5. Windows Terminal を再起動してください

以上でWindows Terminal 上での文字化けが直ります。

VSCodeのターミナル

※前置き: VSCode から WSL にアクセスする際には、Remote Development プラグインが必要です。

VSCodeを開き、「Ctrl+Shift+p > ターミナル: ターミナル設定の構成」から、Terminal › Integrated: Font Family の項目 を Cica にします。
VSCodeのターミナル設定.png

VSCode から WSL のプロジェクトを開き、ターミナル上で fish を起動してください。

これで VSCode 上でも文字化けせずにいい感じで fish が使えます!

仕上げ:プロンプトの表示内容を設定

文字化けも解消されて、大分いい感じになりました。
しかし、まだ日付フォーマットがおかしかったり、ディレクトリ名が省略されています。
次はこれを調整します。

fishは ~/.config/fish ディレクトリ以下に様々な設定を持っています。
今回は、~/.config/fish/config.fish の設定を変更します。

こんな感じで以下の set から始まる2行を追加します。

if status is-interactive
    set -g theme_date_format "+%Y-%m-%d %H:%M:%S" # 日付のフォーマットを変更(例: 2022-03-01 23:22:22)
    set -g fish_prompt_pwd_dir_length 0           # フォルダ名が省略されていたものを省略しなくする
    # Commands to run in interactive sessions can go here
end

設定が完了したら、 fish を再起動してください。

おめでとうございます!
こんな感じの見た目になったと思います。
プロンプト目標.png

おまけ: fish 起動時にかわいいお魚を表示

ここまで読んでくださってありがとうございます。
最後に、fish_logo というかわいいお魚を表示するプラグインがあるので紹介します。
個人的にかなり惹かれたので、起動時に表示してみましょう。

fish を起動して以下を実行します。

fisher install laughedelic/fish_logo

~/.config/fish/functions/fish_greeting.fishfish_logo を追記します。

function fish_greeting -d "What's up, fish?"
    set_color $fish_color_autosuggestion
    uname -nmsr

    # TODO: `command -q -s` only works on fish 2.5+, so hold off on that for now
    command -s uptime >/dev/null
    and command uptime

    set_color normal
    echo "Hello FISH!!!" # せっかくなのでごあいさつ
    fish_logo            # お魚を呼び出す
    
end

起動時にかわいいお魚がお出迎えしてくれます。
最終形.png

最後に

ここでは、 fish をログインシェルにしたりいろいろなプラグインの紹介は書いていませんが、
いろいろ試して書き足していこうと思っています。

ここまで読んでくださった方、ありがとうございました。

参考

20
26
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
20
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?