---
title: Zellij
url: https://doc.liz6.com/tools/zellij
locale: zh
area: tools
tags:
- tools
date: null
modified: 2026-06-30
description: 拿来替 tmux 的多路复用器,核心是和 Neovim 的无缝跳格。
---

# Zellij

用它替了 tmux,主要图配置是结构化的 KDL、插件用 WASM、布局能存成文件。但让我真正离不开的只有一件事:和 Neovim 的无缝跳格。

在 nvim 里按 `Ctrl+h/j/k/l` 是切 vim 窗口,到了最边上再按一下,焦点直接跨出去到相邻的 Zellij 面板,反过来也一样。整个屏幕被切成一堆格子,我不需要记"现在光标在 vim 里还是 zellij 里、该用哪套键"——就一套 `Ctrl+hjkl` 走天下。这靠 nvim 侧的 smart-splits 和 Zellij 侧的 [vim-zellij-navigator](https://github.com/hiasr/vim-zellij-navigator) 插件对接。

要让这套成立,前提是 Zellij 别乱抢键。它默认会吃掉一堆快捷键和底下程序打架,所以我让它常驻 **locked 模式**——基本什么都不拦,把键让给 nvim 和 shell,`Ctrl+g` 才进它自己的 normal 模式去做分屏、开标签那些操作。

```kdl
locked {
    bind "Ctrl g" { SwitchToMode "normal"; }
}
shared_except "tmux" {
    bind "Alt e" { EditScrollback; }   // 把回滚缓冲丢进 nvim 去搜
    bind "Ctrl h" { MessagePlugin ".../vim-zellij-navigator.wasm" {
        name "move_focus_or_tab"; payload "left"; move_mod "ctrl"; }; }
    // j/k/l 同理
}
```

`Alt e` 那条我用得很勤:日志刷过去了,一键把回滚内容扔进 nvim,该搜搜该抄抄。

进了 normal 模式(`Ctrl+g`)之后是分模式操作,Zellij 的设计是一级菜单 + 子键:`p` 进 pane 模式(再按方向键开/切面板)、`t` 进 tab、`r` 进 resize、`s` 进 scroll/search、`o` 进 session。和 tmux 的"一个前缀键 + 一堆要背的字母"比,它每进一个模式底栏直接把可用键画出来,基本不用记。常用的就开面板、切标签、`w` 把面板浮起来当临时窗口、`f` 全屏专注。

真正让多路复用器有价值的是**会话持久**,这块值得单说:

- **detach / attach**:`zellij attach` 接回上次的会话,SSH 断了、手滑关了终端,里面跑着的进程和整个布局都还在。这是我"终端可替换、会话不丢"那条原则的落点。
- **布局存成文件**:常用的工作区(比如左边代码、右下日志、右上 REPL)写成 `.kdl` 布局,`zellij --layout dev` 一把铺好,不用每次手动切。布局里能预设每个面板的初始命令和工作目录。
- **resurrection**:会话异常退出后,Zellij 会记下布局,下次能"复活"——面板结构回来,跑过的命令可一键重跑。

配色和状态栏跟着 [matugen](hyprland/04-waybar-theming.md) 走(`MaterialYou.kdl`),底栏不用默认那条、换成 **zjstatus** 自己画:把模式、标签、会话名、时间按自己的格式排,信息密一些也和整桌面一套色。
