feat(vim): gt / gT cycle workspace tabs (T-405 part 2)
Closes out the T-403 cross-pane vim layer. gt/gT bind to the existing workspace.tab.next/previous commands (also on ctrl+pagedown/up for every preset), resolved by the focused editor's matcher or a pane's PaneKeyNav — bare-g sequences stay editor/pane-local (T-404's global matcher only engages on modified-chord prefixes), so no global-matcher surgery. - vim.yaml: g t -> command:workspace.tab.next, g shift+t -> .previous (vim.normal); shares the `g` prefix with `g g` (docStart / nav.top), distinguished by the final chord. - PaneKeyNav now EXECUTES non-editor.vim.* command intents (e.g. workspace.tab.*) instead of swallowing all command intents, so gt/gT work from a focused pane; editor.vim.* buffer edits stay blocked in panes. Tests: vim-preset resolution (gt/gT bind, gg intact), PaneKeyNav executes the command from a pane, and editor.vim.* is never run from a pane. make test green; analyze + format clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -133,6 +133,19 @@ bindings:
|
||||
keys: [ctrl+w q, ctrl+w c]
|
||||
when: "vim.normal || vim.visual"
|
||||
|
||||
# ---- Tab motions (T-405) ---------------------------------------------
|
||||
# gt / gT cycle the workspace tab strip via the preset-neutral
|
||||
# workspace.tab.* commands (also on ctrl+pagedown/up everywhere). Bare-`g`
|
||||
# sequences are editor/pane-local — the focused editor's matcher or a pane's
|
||||
# PaneKeyNav resolves them and runs the command; they share the `g` prefix
|
||||
# with `g g` (docStart / nav.top), distinguished by the final chord.
|
||||
- intent: command:workspace.tab.next
|
||||
keys: g t # gt
|
||||
when: vim.normal
|
||||
- intent: command:workspace.tab.previous
|
||||
keys: g shift+t # gT
|
||||
when: vim.normal
|
||||
|
||||
# ---- Ex command-line (T-407) -----------------------------------------
|
||||
# `:` opens the transient ex overlay (`:w` `:q` `:wq` `:x` `:e <path>` `:N`);
|
||||
# `ZZ` runs `:wq` directly. Both are typed app intents the editor's command
|
||||
|
||||
Reference in New Issue
Block a user