ターミナルがダサいとモテない。macOSのbashでflylineを使う編。

ターミナルがダサいとモテない。macOSのbashでflylineを使う編。

自分はbashを使っています。

macOSでbashって言うと「zshじゃないの?」と聞かれそうですが、ずっとbashです🤣

今回はTerminalをもう一段うるさくしてくれるflylineを入れていきます。

前に書いたTabbyでQuake modeでも少し触れましたが、最近はStarshipとflylineを組み合わせています。

flyline

flylineはbashのline editingをモダンにしてくれるpluginです。

bashがコマンド入力に使っているreadlineを置き換えて、こんな機能を追加してくれます。

  • Intellisenseっぽいコマンド補完
  • 入力中のsyntax highlighting
  • fuzzyなhistory検索
  • 括弧やquoteのauto close
  • mouseでのcursor移動や候補選択
  • AI Agentを使ったコマンド生成
  • 右promptやanimationを含むrich prompt

ble.shに近い存在ですが、flylineはRustで書かれていて、bashと同じprocessの中で動きます。

自分はbashを使い続けたいけど、入力体験はモダンにしたいので気になって使い始めました。

Install

macOS標準のbashは古く、custom builtinsを使うflylineをloadできません。

まずはHomebrewで新しいbashを入れます。

Bash
brew install bash

自分の環境ではこんな感じです。

Plain text
GNU bash, バージョン 5.3.15(1)-release (aarch64-apple-darwin25.4.0)

Homebrewのbashをlogin shellにする

Homebrewで入れたbashをmacOSのlogin shellとして使う場合は、/etc/shellsへ追加してからchshします。

Bash
BREW_BASH="$(brew --prefix)/bin/bash"
grep -Fxq "${BREW_BASH}" /etc/shells || echo "${BREW_BASH}" | sudo tee -a /etc/shells
chsh -s "${BREW_BASH}"

設定後は新しいTerminalを開いて確認します。

Bash
echo "${SHELL}"
bash --version

Apple Siliconの自分の環境では/opt/homebrew/bin/bashになっています。

flylineを入れる

公式のquick installを使いました。

Bash
curl -sSfL https://github.com/HalFrgrd/flyline/releases/latest/download/install.sh | sh

このinstallerはflylineをdownloadして、.bashrcからloadする設定も追加してくれます。

自分はdotfilesをchezmoiで管理しているので、installer任せにはせず.bashrc側の設定をtemplateにしています。

macOSでは${HOME}/.local/lib/libflyline.dylibが配置されました。

.bashrcで有効化

自分の設定から必要なところを抜き出すとこんな感じです。

Bash
if [[ $- == *i* ]]; then
  if ! type -t flyline >/dev/null 2>&1; then
    enable -f "${HOME}/.local/lib/libflyline.dylib" flyline || true
  fi

  if type -t flyline >/dev/null 2>&1; then
    flyline run-tutorial false

    flyline \
      --send-shell-integration-codes full \
      --enable-extended-key-codes true

    flyline suggestions --auto-suggest true
    flyline editor --auto-close-chars true
    flyline set-style --default-theme dark

    flyline set-cursor \
      --interpolate-easing in-elastic \
      --effect-easing in-elastic \
      --backend flyline \
      --style "reverse"
  fi
fi

enable -fでdynamic loadしているので、flylineは外部commandではなくbashのbuiltinとして動きます。

Bash
type -t flyline
flyline version
Plain text
builtin
flyline 1.6.2

まずは公式READMEに書かれているtutorialも一度動かした方がわかりやすいです。

Bash
flyline run-tutorial

WezTermでコマンド補完

新しいWezTermを開いてflylineの後にTabを押してみます。

WezTermでflylineコマンドの補完候補を表示した画面

flyline <Tab>でsubcommandやoptionが一覧表示される

bashのcompletionをそのまま活用しつつ、説明付きの候補がpopupします。

候補が多い時は、このまま入力するとfuzzyに絞り込めるのが便利です。

次はsuggestionsの中を見てみます。

WezTermでflyline suggestionsの補完候補を表示した画面

flyline suggestions <Tab>でさらに次の候補を表示

普通のbash completionより情報量が多くて、helpを開かなくてもだいたい何を設定できるかわかります。

Ctrl+Rのhistory検索もfuzzy searchになり、入力中はsyntax highlightingされます。

括弧やquoteも閉じてくれるので、ShellというよりEditorに近い感じです。

AI Agentへ入力中のcommandを渡す機能もあり、自分はCodexと繋いでいます。

ここまで来るとTerminalは静かにcommandを打つだけの場所ではなくなってきました🤣

mouseのcaptureが合わない場合は無効にもできます。

Bash
flyline mouse --mode disabled

しばらく使ってみた感想

しばらく使っていますが、正直なところちょっと邪魔です🤣

commandを少し入力しただけで候補がぱっと開くので、画面が忙しくなります。

Starshipのpromptもかなり情報量が多いのに、flylineまで動くとめちゃくちゃうるさいTerminalになります😅

ただ、知らなかったoptionに気がついたり、長いcommandを最後まで入力しなくてよかったり、使っているとちゃんと便利です。

cursorがぬるっと動いたり、補完候補が気持ちよく絞り込まれたり、触っていて楽しいのもあります。

邪魔だなと思う瞬間はあるけど、無いとちょっと寂しい。

ちょっと邪魔だけど、でも楽しんでいます。

しばらくはこのまま使っていこうと思います😆

Matrix animation

flylineには--matrix-animationという面白いoptionもあります。

Bash
flyline --matrix-animation

映画『マトリックス』で有名な、緑色の文字が降ってくるdigital rain風のanimationをTerminalの背景に再現できます。

WezTermの背景でflylineのMatrix animationを表示した画面

flyline --matrix-animationでTerminalの背景にdigital rainを表示

値を付けずに実行すると常時表示されます。止める場合はoffを指定します。

Bash
flyline --matrix-animation off

Terminalがさらにうるさくなります🤣

medium.com/@yusukeh - ターミナルがダサいとモテない。macOSのbashでflylineを使う編。 の記事を転載しています。