Zellij 自定义键位绑定与修饰键

Zellij 的键位绑定系统非常灵活,你可以在配置文件中完全自定义每个模式下的快捷键。从简单的重新映射到复杂的多操作组合,再到共享绑定和修饰键修改,本文将覆盖键位绑定的全部语法和用法。

一、键位模式列表

键位绑定按模式(Mode)组织。每个模式下定义的快捷键只在该模式激活时生效。Zellij 支持以下模式:

模式名称 说明
normal 默认模式,键盘输入直接传递给 shell
locked 锁定模式,禁用所有 Zellij 快捷键
resize 调整面板大小
pane 面板管理(分割、关闭、导航等)
move 移动面板位置
tab 标签页管理
scroll 滚动查看历史输出
search 搜索滚动缓冲区内容
session 会话管理
tmux tmux 兼容模式

config.kdl 中,键位绑定的顶层结构是 keybinds 块,每个模式作为其子块:

keybinds {
    normal { ... }
    pane { ... }
    tab { ... }
    // ...其他模式
}

二、绑定按键

基本语法

使用 bind 关键字将一个按键绑定到一个或多个操作:

keybinds {
    normal {
        bind "Alt n" { NewPane; }
    }
}

这行配置表示:在 Normal 模式下,按 Alt+n 新建一个面板。

多操作绑定

一个按键可以同时触发多个操作,按顺序执行:

keybinds {
    normal {
        bind "Alt h" { MoveFocusOrTab "Left"; SwitchToMode "Normal"; }
    }
}

这里 Alt+h 会先向左移动焦点(如果已在最左则切换标签页),然后切换回 Normal 模式。

多键绑定同一操作

你也可以将多个按键绑定到同一个操作,提供多种触发方式:

keybinds {
    pane {
        bind "n" { NewPane; }
        bind "Down" { NewPane; }
    }
}

三、解除绑定

如果你想移除某个默认的键位绑定,使用 unbind 关键字:

keybinds {
    normal {
        unbind "Ctrl p"
    }
}

这会移除 Normal 模式下 Ctrl+p 的所有默认绑定。

清除默认键位

如果你想完全自定义键位而不受默认绑定的干扰,可以使用 clear-defaults 清除某个模式下的所有默认绑定:

keybinds {
    normal {
        clear-defaults true
        bind "Alt t" { SwitchToMode "Tab"; }
        bind "Alt p" { SwitchToMode "Pane"; }
    }
}

使用 clear-defaults true 后,该模式下的所有默认快捷键都将被移除,只保留你显式定义的绑定。这为你提供了完全的控制权。

四、键名格式

Zellij 支持丰富的键名格式,可以表示各种键盘按键:

类型 格式 示例
单个字符 直接写字符 "a""0"" "(空格)
修饰键组合 修饰键 + 字符 "Ctrl a""Alt n""Shift Tab"
多修饰键 修饰键用 + 连接 "Ctrl+Alt t""Ctrl+Shift n"
功能键 F + 数字 "F1" ~ "F12"
方向键 方向名称 "Up""Down""Left""Right"
特殊键 键名 "Enter""Esc""Tab""Backspace""Delete""Home""End""PageUp""PageDown"
Super 键 Super + 字符 "Super l"

五、共享键位绑定

有时候你希望一组按键在多个模式下都可用。Zellij 提供了三种共享绑定机制来避免重复定义:

shared

shared 块中定义的绑定会应用到所有模式

keybinds {
    shared {
        bind "Ctrl q" { Quit; }
    }
}

这里 Ctrl+q 退出 Zellij 在任何模式下都有效。

shared_except

shared_except 将绑定应用到除指定模式外的所有模式:

keybinds {
    shared_except "locked" {
        bind "Ctrl g" { SwitchToMode "Locked"; }
    }
}

这里 Ctrl+g 切换到锁定模式,但在已经锁定的模式下无效(因为锁定模式中所有快捷键都被禁用)。

shared_among

shared_among 将绑定仅应用到指定的几个模式:

keybinds {
    shared_among "pane" "tab" "resize" {
        bind "Esc" { SwitchToMode "Normal"; }
    }
}

这里 Esc 返回 Normal 模式,仅在 Pane、Tab 和 Resize 三个模式中生效。

六、修改修饰键

Zellij 使用"主修饰键"和"副修饰键"的概念来组织模式切换快捷键。默认情况下:

  • 主修饰键(Primary Modifier)Ctrl,用于 Normal 模式下进入各种功能模式。
  • 副修饰键(Secondary Modifier)Alt,用于在 Normal 模式下直接执行常用操作。

例如,默认配置中 Ctrl+p 进入 Pane 模式(主修饰键),而 Alt+n 直接新建面板(副修饰键)。

运行时修改修饰键

你可以在不编辑配置文件的情况下,在运行时修改修饰键。操作步骤:

  1. Ctrl+o 打开模式菜单。
  2. c 打开配置界面。
  3. 选择 "Change Modifiers"
  4. 修改主修饰键和/或副修饰键。

例如,将主修饰键从 Ctrl 改为 Alt,那么原来需要 Ctrl+p 进入 Pane 模式的操作就变成了 Alt+p

支持的修饰键组合

主副修饰键支持以下选项:

修饰键 说明
Ctrl Control 键
Alt Alt / Option 键
Ctrl+Alt 同时按下 Ctrl 和 Alt
Super Windows / Command 键

修改修饰键是 Zellij 对不同用户习惯和终端环境适配的重要机制。例如,某些终端模拟器可能会拦截特定的 Ctrl 组合键,此时将主修饰键切换为 Alt 可以避免冲突。

在配置文件中修改

你也可以直接在 config.kdl 中永久修改修饰键:

keybinds {
    default_mode "unlock-first"
    // 或通过 bind/unbind 自定义具体的模式切换键
}

结合 clear-defaults 和自定义 bind,你可以打造一套完全属于自己的键位体系。不过对于大多数用户来说,Zellij 的默认键位设计已经相当合理,建议在充分熟悉默认配置后再考虑自定义。

返回博客列表