🖥️

Ghostty + Claude Codeで作るVSCode風・軽量ターミナル開発環境(alias編)

に公開

ご注意
本記事の内容はmacOS + Ghostty環境での動作を前提としています。ターミナルの種類やマシンスペック、OSのバージョンによってはうまく動作しない場合があります。また、私自身の理解が間違っている部分もあるかもしれません。「ここ違うよ」「こうした方がいいよ」などありましたら、ぜひコメントで教えていただけると嬉しいです!

きっかけ

先日、こちらの記事を拝見しました。

https://note.com/electrical_cat/n/n7a3b634a2b51

GhosttyのペインでVSCode風の開発環境を再現するという内容で、FileTree、keifu、zellijを組み合わせた構成が紹介されていました。

早速試してみましたが、いくつかの問題に直面しました。

zellijとGhosttyの相性問題

記事ではzellijを使ってセッション管理をしていましたが、私の環境ではうまくいきませんでした。

問題点:

  • Ghosttyで設定していた Cmd+D(右に分割)や Cmd+Shift+D(下に分割)が効かない
  • Cmd+{ / Cmd+} でのペイン移動もzellijに奪われる
  • Ghosttyのネイティブなペイン操作が使えなくなる

zellijは素晴らしいツールですが、Ghosttyの快適なキーバインドを活かしたかった私には合いませんでした。(zellij、Ghosttyへの認識の間違いやもっと良い方法があればご指摘ください🙇)

解決策:aliasで自動化する

そこで考えたのが、zellijを使わずにGhosttyのネイティブ機能だけで完結させる方法です。

ペイン分割とコマンド実行を自動化し、aliasとして登録することで、ワンコマンドで開発環境を構築できるようにしました。

最終的な構成

  • 左上: yazi(ファイルマネージャー)
  • 左下: keifu(Git履歴)
  • : Claude Code

使用ツールの紹介

yazi

Rust製の高速なターミナルファイルマネージャーです。元記事ではFileTreeが紹介されていましたが、私の環境では特定のディレクトリで動作しなかったため、yaziを採用しました。

https://github.com/sxyazi/yazi

採用理由:

  • どのディレクトリでも安定して動作する
  • 設定でシンプルな1カラム表示にカスタマイズ可能
  • 非同期I/Oで高速

元記事でも「yaziもいいんですけどね、リッチすぎる」と触れられていましたが、ratio = [0, 1, 0] の設定でシンプルなサイドバー的表示にできるので、今のところリッチさを抑えられていると感じています。

keifu

Gitのコミット履歴をツリー表示してくれるTUIツールです。元記事の著者の同僚の方が作成されたとのこと。

https://github.com/trasta298/keifu

特徴:

  • 縦長の画面でも見やすいレイアウト
  • LazyGitよりシンプルで軽量
  • ブランチの状態が一目でわかる

サイドバーとしてコンパクトに使いたい場合に最適です。

Claude Code

Anthropic公式のCLIコーディングツールです。ターミナル上でClaudeと対話しながらコーディングできます。

https://github.com/anthropics/claude-code

特徴:

  • ターミナルで完結するAIコーディング環境
  • ファイルの読み書き、コマンド実行が可能
  • VSCodeやCursorより軽量

セットアップ

1. 必要なツールをインストール

# yazi(ファイルマネージャー)
brew install yazi

# keifu(Git履歴ビューア)
cargo install keifu

# Claude Code
npm install -g @anthropic-ai/claude-code

2. Ghosttyのキーバインド設定

~/.config/ghostty/config に以下を追加:

# ペイン分割
keybind = cmd+d=new_split:right
keybind = cmd+shift+d=new_split:down

# ペイン移動
keybind = ctrl+option+h=goto_split:left
keybind = ctrl+option+l=goto_split:right
keybind = ctrl+shift+j=goto_split:down
keybind = ctrl+shift+k=goto_split:up

# ペインリサイズ(40px単位)
keybind = cmd+ctrl+left=resize_split:left,40
keybind = cmd+ctrl+right=resize_split:right,40
keybind = cmd+ctrl+up=resize_split:up,40
keybind = cmd+ctrl+down=resize_split:down,40

注意: Ctrl+Option+J/K は私の環境では動作しなかったため、Ctrl+Shift+J/K に変更しています。環境によってはmacOSや他のアプリと競合する可能性があります。

3. yaziの設定(シンプル表示)

~/.config/yazi/yazi.toml を作成:

[mgr]
ratio = [0, 1, 0]

これで親ディレクトリとプレビューを非表示にし、現在のディレクトリのみ表示されます。

4. tcode コマンドを登録

~/.zshrc に以下を追加:

# Ghosttyターミナル開発レイアウト
# 使い方: tcode [ディレクトリ]
# 左上: yazi, 左下: keifu, 右: claude-code
tcode() {
    local target_dir="${1:-$(pwd)}"

    local cmd_yazi="cd ${target_dir} && yazi"
    local cmd_keifu="cd ${target_dir} && keifu"
    local cmd_claude="cd ${target_dir} && claude"

    osascript \
        -e 'on run argv' \
        -e '    set cmd_yazi to item 1 of argv' \
        -e '    set cmd_keifu to item 2 of argv' \
        -e '    set cmd_claude to item 3 of argv' \
        -e '    tell application "Ghostty" to activate' \
        -e '    tell application "System Events"' \
        -e '        tell process "Ghostty"' \
        -e '            keystroke "d" using command down' \
        -e '            delay 0.25' \
        -e '            key code 4 using {control down, option down}' \
        -e '            delay 0.1' \
        -e '            set the clipboard to cmd_yazi' \
        -e '            keystroke "v" using command down' \
        -e '            keystroke return' \
        -e '            delay 0.4' \
        -e '            keystroke "d" using {command down, shift down}' \
        -e '            delay 0.25' \
        -e '            set the clipboard to cmd_keifu' \
        -e '            keystroke "v" using command down' \
        -e '            keystroke return' \
        -e '            delay 0.15' \
        -e '            key code 37 using {control down, option down}' \
        -e '            delay 0.1' \
        -e '            set the clipboard to cmd_claude' \
        -e '            keystroke "v" using command down' \
        -e '            keystroke return' \
        -e '            delay 0.2' \
        -e '            -- 左ペインを狭くする' \
        -e '            key code 4 using {control down, option down}' \
        -e '            repeat 25 times' \
        -e '                key code 123 using {command down, control down}' \
        -e '            end repeat' \
        -e '            -- 左上を大きくする' \
        -e '            key code 40 using {control down, shift down}' \
        -e '            repeat 8 times' \
        -e '                key code 125 using {command down, control down}' \
        -e '            end repeat' \
        -e '            -- 右ペインに戻る' \
        -e '            key code 37 using {control down, option down}' \
        -e '        end tell' \
        -e '    end tell' \
        -e 'end run' \
        -- "${cmd_yazi}" "${cmd_keifu}" "${cmd_claude}"
}

カスタマイズのポイント

  • repeat 25 times の数値で左右の比率を調整できます(大きいほど左が狭くなる)
  • repeat 8 times の数値で左上・左下の比率を調整できます(大きいほど左上が大きくなる)
  • delay の値はPCのスペックによって調整が必要です。動作が不安定な場合は値を大きくしてください

5. 使い方

source ~/.zshrc
tcode /path/to/your/project

これだけで、3ペイン構成の開発環境が自動的に立ち上がります。

ポイント: 新規ウィンドウを開かず、tcode を実行したウィンドウでそのまま分割が始まります。実行元のターミナルがそのまま左上ペイン(yazi)になるため、余分なウィンドウが残りません。

なぜこの方法にしたか

zellijを使わないメリット

  • Ghosttyのキーバインドがそのまま使える: Cmd+D での分割、ペイン間移動など
  • シンプル: 追加のmultiplexerなしで完結
  • 軽量: 余計なプロセスが走らない

yaziを選んだ理由

  • 安定動作: どのディレクトリでも動く
  • カスタマイズ性: ratio = [0, 1, 0] でシンプル表示に
  • 高速: Rust製で軽量

元記事でも触れられていましたが、yaziはリッチな機能が多いです。ただ、設定でシンプルにできるので、サイドバー的な使い方にも十分対応できます。

ペインサイズの自動調整について

Ghosttyにはデフォルトでペインリサイズのキーバインドが設定されていないため、上記の設定で Cmd+Ctrl+矢印 を追加しています。

tcodeコマンドでは、resize_split を呼び出すことで、ペイン分割後に自動でサイズ調整を行っています。

# 左ペインを狭くする(25回 = 25 × 40px = 1000px分)
repeat 25 times
    key code 123 using {command down, control down}  -- Cmd+Ctrl+Left
end repeat

この回数は好みに応じて調整してください。私の環境(MacBook Pro 14インチ)では、左右比率を25回、上下比率を8回に設定しています。

おわりに

zellijやFileTreeがうまく動かなくて困っていましたが、結果的にGhosttyのネイティブ機能を活かしたシンプルな構成に落ち着きました。

自動化は少しハマりどころがありましたが(日本語入力が有効だとコマンドが文字化けする、など)、クリップボード経由でペーストする方法で解決できました。

ターミナルベースの軽量開発環境を探している方の参考になれば幸いです。


動作が不安定な場合

delay 値はPCのスペックや負荷状況によって調整が必要です。コマンドが正しく入力されない、ペインの配置がおかしい等の症状が出る場合は、delay の値を大きくしてみてください(例: 0.250.4)。

逆に、高スペックなマシンでは delay を小さくすることで、より高速に動作させることも可能です。

フィードバック歓迎

記事の内容に誤りや改善点があれば、コメントでお知らせいただけると助かります!

参考リンク

https://note.com/electrical_cat/n/n7a3b634a2b51

https://ghostty.org/

https://github.com/sxyazi/yazi

https://github.com/trasta298/keifu

https://docs.anthropic.com/en/docs/claude-code

Discussion