From dd739c9f47b11950d0fde6a19c5c36a499be5bd4 Mon Sep 17 00:00:00 2001 From: sommerfeld Date: Wed, 13 May 2026 13:43:12 +0100 Subject: feat(zellij): relocate mode-entry keys to Alt+Shift+* to stop shadowing shell/nvim Zellij's default Ctrl+* mode-entry keys (Ctrl+p/t/r/s/o/g/b/q) were intercepted before reaching the inner shell/editor, shadowing zsh fzf bindings (Ctrl+t), history navigation (Ctrl+p/n), nvim jumps (Ctrl+o), save (Ctrl+s), etc. Unbind all conflicting Ctrl+* entries and relocate mode-entry to Alt+Shift+: Alt+Shift+P Pane Alt+Shift+T Tab Alt+Shift+R Resize Alt+Shift+S Scroll Alt+Shift+O Session Alt+Shift+Z Locked (Z avoids Treewalker Alt+Shift+h/j/k/l swap) Alt+Shift+Q Quit TMUX-compat mode dropped. Only Ctrl+h/j/k/l remain bound in zellij (for vim-zellij-navigator); every other Ctrl+* now passes through. Requires fresh zellij session (kill-all-sessions -y) to take effect. --- KEYBINDS.md | 9 +++++++++ dot_config/zellij/config.kdl | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/KEYBINDS.md b/KEYBINDS.md index d36daaa..18129da 100644 --- a/KEYBINDS.md +++ b/KEYBINDS.md @@ -207,6 +207,15 @@ All binds are in `shared_except "locked"` mode (active everywhere except locked | `Alt-q` | Detach session | | `Alt--` / `Alt-=` | Resize decrease / increase | | `Ctrl-h/j/k/l` | Move focus (vim-zellij-navigator) | +| `Alt-Shift-P` | Enter Pane mode | +| `Alt-Shift-T` | Enter Tab mode | +| `Alt-Shift-R` | Enter Resize mode | +| `Alt-Shift-S` | Enter Scroll mode | +| `Alt-Shift-O` | Enter Session mode | +| `Alt-Shift-Z` | Enter Locked mode | +| `Alt-Shift-Q` | Quit zellij | + +Mode-entry keys are relocated from their zellij defaults (`Ctrl-p/t/r/s/o/g/q`, `Ctrl-b` TMUX dropped) to `Alt-Shift-*` so the `Ctrl-*` keys pass through to zsh and nvim. Only `Ctrl-h/j/k/l` remain intercepted (for pane navigation). ## Zsh diff --git a/dot_config/zellij/config.kdl b/dot_config/zellij/config.kdl index 5f7e193..569a52e 100644 --- a/dot_config/zellij/config.kdl +++ b/dot_config/zellij/config.kdl @@ -23,6 +23,20 @@ pane_frames false // Custom keybindings (merged with defaults) keybinds { shared_except "locked" { + // Free up Ctrl+* keys so they pass through to zsh / nvim. + // Mode-entry relocated to Alt+Shift+* below. Ctrl+h/j/k/l are kept + // by the vim-zellij-navigator binds further down. + unbind "Ctrl b" "Ctrl g" "Ctrl n" "Ctrl o" "Ctrl p" "Ctrl q" "Ctrl s" "Ctrl t" + + // Mode entry (Alt+Shift+) + bind "Alt Shift P" { SwitchToMode "Pane"; } + bind "Alt Shift T" { SwitchToMode "Tab"; } + bind "Alt Shift R" { SwitchToMode "Resize"; } + bind "Alt Shift S" { SwitchToMode "Scroll"; } + bind "Alt Shift O" { SwitchToMode "Session"; } + bind "Alt Shift Z" { SwitchToMode "Locked"; } + bind "Alt Shift Q" { Quit; } + // Direct tab access (Alt+number) bind "Alt 1" { GoToTab 1; } bind "Alt 2" { GoToTab 2; } -- cgit v1.3.1