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 直接新建面板(副修饰键)。
运行时修改修饰键
你可以在不编辑配置文件的情况下,在运行时修改修饰键。操作步骤:
- 按
Ctrl+o打开模式菜单。 - 按
c打开配置界面。 - 选择 "Change Modifiers"。
- 修改主修饰键和/或副修饰键。
例如,将主修饰键从 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 的默认键位设计已经相当合理,建议在充分熟悉默认配置后再考虑自定义。