## 経緯
1年半前に[[Zellij]]を一度試したことが、このときは採用を見送った。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" />
<span class="link-card-v2-site-name">Minerva</span>
</div>
<div class="link-card-v2-title">
📜2024-07-27 Zellijを使ってみる
</div>
<div class="link-card-v2-content">DHH氏のOMAKUBセットアップスクリプトでZellijに興味を持ち、tmuxやWindows Terminalとの比較やNeovimとの相性を検証した。miseでインストールし、テーマやキーバインドをカスタマイズしたが、Neovim利用時に表示崩れやカラートラブルが発生したため、用途を限定して試用した。最終的に大きなメリットを感じず、Windows TerminalとNeovim中心の運用に戻した。</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" />
<a data-href="📜2024-07-27 Zellijを使ってみる" class="internal-link"></a>
</div>
%%[[📜2024-07-27 Zellijを使ってみる]]%%
あれからしばらく経ち、マシンも[[macOS]]に変わり、[[ターミナル]]も[[Ghostty]]になったのでもう一度試してみることにした。
## 当時について
- メリット
- 分割速度・移動・状態の引き継ぎがスムーズ
- ローカルなら[[macOS]]+[[Ghostty]]だとこれらは実現できている
- ただし[[SSH]]の場合は別
- 今は仕事も含めて使う機会が多くないのでアドバンテージはそこまででない
- レイアウト機能
- これは未知数、仕事では使える可能性がある
- デメリット
- [[Neovim]]の表示が乱れる
- 🔎 **[[macOS]]+[[Ghostty]]でどうなるか?**
## 環境
| 対象 | バージョン |
| ----------- | ------ |
| [[macOS]] | 15.7.3 |
| [[Ghostty]] | 1.2.3 |
| [[Zellij]] | 0.43.1 |
## インストール
```console
mise use -g zellij
```
## 前回の課題について
### [[Neovim]]の表示乱れ
解消していた。[[Zellij]]のバージョンアップによるものか、[[macOS]] + [[Ghostty]] との相性なのかは謎。
カラーリングや[[virtual text (Neovim)|virtual text]]の色問題も解消していた。
## 良いところ
### タブが見やすい
[[Ghostty]]だとこんな感じ。[[macOS]]だとスタイルのカスタマイズはできない。ちゃんと見れば分かるが、アクティブなものが何かが一瞬で分からなかったりする。
![[2026-02-01-08-43-58.avif]]
[[Zellij]]を使うとこう。読みやすいしアクティブなものを視認しやすい。
![[2026-02-01-08-47-18.avif]]
## 気になったこと
### 画像表示の劣化
[[Yazi]]などの画像描画が[[Neovim]]起動時と同様に劣化する。
![[2026-02-01-08-24-10.avif]]
*[[Zellij]]なし*
![[2026-02-01-08-24-48.avif]]
*[[Zellij]]あり*
### [[Ghostty]]や[[Neovim]]とのキーマップ衝突
- デフォルトのキーマップだと `Ctrl` は[[Ghostty]]や[[Neovim]]のキーマップと衝突する
- 正直、[[Ghostty]]と[[Neovim]]のキーマップ衝突を防ぐだけでも限界
- [[Ghostty]]の基本的なキーマップを削除すれば、[[Zellij]]がとって代われるかも?
- その場合、[[Ghostty]]のタブ機能を無効化し、[[Zellij]]ありきのフローがいる
- **[[#画像表示の劣化]]** などのように[[Zellij]]じゃない場合との[[コンテキストスイッチ]]切り替えが必要
- そのデメリットを上回るメリットがあるか?
- [[Zellij]]専用のキーマップを定義する
- たとえば `<C-p>r` を `;qr` にする
- モードごとに `;` スタートのキーマップが必要
- かといって `;qpr` のようにすると流石に手数が多すぎる
- [[Neovim]]との衝突は `<C-g>` の [[Zellij]] lockコマンドを使えば解消できる
- [[Neovim]]起動中は[[Zellij]]が無効化される前提
- これはこれで[[コンテキストスイッチ]]切り替えコストがかかりそう
## 結論
[[Ghostty]]のタブやウィンドウをやめて、[[Zellij]]には移行しない。何よりも **できるかぎりシンプルにしたい** という自分の思想に反する。
設定でカスタマイズできるところはあるかもしれないが、それに伴うメリットを現時点でそこまで感じないため。
- **メリット**
- レイアウトに関する自由度や変更速度がUPする
- 通常のターミナル操作で必要になるイメージが今のところあまりない
- [[Ghostty]]のウィンドウを新しく立ち上げてウィンドウ整備で事足りる
- **[[Neovim]]操作中は[[Neovim]]の[[ウィンドウ (Vim)|ウィンドウ]]・[[タブ (Vim)|タブ]]管理で事足りている** のでそこまでメリットにならない
- **よく使うレイアウトやワークスペースのセットアップが一瞬で終わる**
- これはメリットだと思う
- **SSHしたときの利便性**
- [[Ghostty]]だとタブを増やしたらLocalからスタートになると思うので、それと比べると格段に便利
- sessionが保存できるので作業の復元が楽
- **しかし、現状のユースケースではこのようなシーンは稀**
- 今後状況が変わったら視野に入れてもいいかも
- **[[Neovim]]内で立ち上げたターミナルだと可能性がありそう**
- **デメリット**
- **キーバインドの設計戦略が難しくなる**
- これは重要な負債となってしまう
- **操作時の[[コンテキストスイッチ]]が増える**
- これも個人的には極力抑えたい部分
ただし、[[Zellij]]はインストールしておく。[[Neovim]]内でターミナルを立ち上げたとき、その中で[[Zellij]]を使うこと自体は可能性を感じたため。