zed/crates/vim/src
Mikhail Pertsev 249f427f10
Some checks are pending
Congratsbot / check-author (push) Waiting to run
Congratsbot / congrats (push) Blocked by required conditions
deploy_nightly_docs / deploy_docs (push) Waiting to run
run_tests / orchestrate (push) Waiting to run
run_tests / check_style (push) Waiting to run
run_tests / clippy_windows (push) Blocked by required conditions
run_tests / clippy_linux (push) Blocked by required conditions
run_tests / clippy_mac (push) Blocked by required conditions
run_tests / clippy_mac_x86_64 (push) Blocked by required conditions
run_tests / run_tests_windows (push) Blocked by required conditions
run_tests / run_tests_linux (push) Blocked by required conditions
run_tests / run_tests_mac (push) Blocked by required conditions
run_tests / doctests (push) Blocked by required conditions
run_tests / check_workspace_binaries (push) Blocked by required conditions
run_tests / build_visual_tests_binary (push) Blocked by required conditions
run_tests / check_wasm (push) Blocked by required conditions
run_tests / check_dependencies (push) Blocked by required conditions
run_tests / check_docs (push) Blocked by required conditions
run_tests / check_licenses (push) Blocked by required conditions
run_tests / check_scripts (push) Blocked by required conditions
run_tests / check_postgres_and_protobuf_migrations (push) Blocked by required conditions
run_tests / extension_tests (push) Blocked by required conditions
run_tests / tests_pass (push) Blocked by required conditions
vim: Add Helix jump-to-word support to Vim mode (#55492)
Closes #55481

Adds Vim-mode access to the existing Helix jump-to-word overlay via `g
z`. We use `g z` because it is currently unassigned in Vim mode, while
`g w` is already used for rewrap.

Most of the implementation lives in `helix.rs` because the existing jump
overlay, label generation, and Helix/Vim modal behavior are currently
intertwined there. This keeps the change small and reuses the existing
navigation overlay logic instead of doing a broader refactor.

In Vim normal mode, jump labels behave like a cursor motion: selecting a
label moves the cursor to the start of the target word without selecting
it. In Vim visual mode, jump labels extend the selection like a Vim
word-start motion, preserving Vim’s inclusive visual-selection behavior.

Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- Added Vim-mode jump-to-word navigation on `g z`.
2026-05-12 21:46:18 +00:00
..
digraph
helix vim: Fix panic when pasting in read-only editor (#55608) 2026-05-04 10:17:14 +00:00
normal Merge gpui::Task and scheduler::Task (#53674) 2026-05-05 22:41:13 +00:00
test editor: Fix soft-wrap in auto-height editors (#54051) 2026-04-18 00:55:44 +02:00
change_list.rs editor: Remove buffer and display map fields from SelectionsCollection (#42175) 2025-11-07 11:21:14 +01:00
command.rs Merge gpui::Task and scheduler::Task (#53674) 2026-05-05 22:41:13 +00:00
digraph.rs vim: Downgrade user config error from panic to log (#42070) 2025-11-06 08:37:04 +00:00
helix.rs vim: Add Helix jump-to-word support to Vim mode (#55492) 2026-05-12 21:46:18 +00:00
indent.rs Reduce amount of monomorphizations from FnMut closures (#49453) 2026-02-18 12:00:02 +01:00
insert.rs Reduce amount of monomorphizations from FnMut closures (#49453) 2026-02-18 12:00:02 +01:00
mode_indicator.rs Make all status bar tools able to hide its button via UI (#54971) 2026-05-08 10:36:03 +00:00
motion.rs vim: Add C preprocessor check in matching function (#55515) 2026-05-07 04:25:42 +00:00
normal.rs Merge gpui::Task and scheduler::Task (#53674) 2026-05-05 22:41:13 +00:00
object.rs vim: Change surrounds with Mini{Quotes,Brackets} and AnyQuotes (#51067) 2026-05-09 04:10:54 +00:00
replace.rs Improve clipboard support on Windows (#51807) 2026-03-18 22:09:26 -04:00
rewrap.rs editor: Extract rewrap and config out of editor.rs (#55855) 2026-05-06 11:57:36 +00:00
state.rs vim: Add Helix jump-to-word support to Vim mode (#55492) 2026-05-12 21:46:18 +00:00
surrounds.rs vim: Change surrounds with Mini{Quotes,Brackets} and AnyQuotes (#51067) 2026-05-09 04:10:54 +00:00
test.rs settings: Add auto completion to command aliases setting (#54496) 2026-04-22 15:09:09 +01:00
vim.rs vim: Add Helix jump-to-word support to Vim mode (#55492) 2026-05-12 21:46:18 +00:00
visual.rs vim/helix: Use grapheme count on replace (#51776) 2026-03-25 23:19:55 +00:00