Are we Helix yet? #33580
Replies: 36 comments 77 replies
-
|
As a veteran Kakoune user (and source code contributer), I would encourage anyone interested in the selection-first modal editing style to study Kakoune itself. Helix still has not caught up to everything that made Kakoune such a beautifully designed and influential piece of software; as such, |
Beta Was this translation helpful? Give feedback.
-
|
Awesome, thanks for making this tracking issue. 1) Can we get some example PRs that added Helix functionality? 2) Similarly, by what mechanisms does "helix_mode": true,` actually gate code: this would also be helpful in tracking. 3) One of the most useful things about Helix is discoverability -- the visual keymap popups continue the trend of intermediate highlighting -- allowing speed with optional feedback. Has there been any discussion on mechanisms for this? I realize it's probably early, but worth bringing up now as that's a large part of what makes Helix so usable, I think it's fair to say. |
Beta Was this translation helpful? Give feedback.
-
|
I filed one more issue #33838 that has to do with visual mode. I also added an extra 100$ to the bounty so it's 300$ now 😊 |
Beta Was this translation helpful? Give feedback.
-
|
I think a good next step to bridge the gap with Helix would be introducing a new mode: Then we could add some simple features to it to prove that it's worth existing separately from Vim's
And then later, someone could implement #31561 which seems a bit trickier. @ConradIrwin would you be open to a new mode that works like this? :) |
Beta Was this translation helpful? Give feedback.
-
|
I'm encountering a strange behavior: when I delete a character with d in Helix normal mode, it switches to Vim normal mode. Has this already been reported? |
Beta Was this translation helpful? Give feedback.
-
|
Seems matching mode also aren't implemented yet ? |
Beta Was this translation helpful? Give feedback.
-
|
Why are keybindings just protocols: Why aren't they actually implementations with interfaces. Each new time someone thinks of using a keybinding paradigm in their app, they have to half cook the implementations. Instead the interface should be there to plug, only part left to him should be to wire the interfaces to parts of their app. |
Beta Was this translation helpful? Give feedback.
-
|
This is just a thought, but one of my favorite features of Helix is the command palette that shows up and shows your options when you're using a sequential keybind: Dunno how far-fetched it would be to get something like this working in Zed. |
Beta Was this translation helpful? Give feedback.
-
|
Is a hybrid mode possible? Emacs keymap in the insert mode, and helix otherwise? |
Beta Was this translation helpful? Give feedback.
-
|
I've opened #34765 to better match helix's insert and append. |
Beta Was this translation helpful? Give feedback.
-
|
I feel like yanking with the cursor on top of a single character should only yank that character, and not the whole line. A workaround is to enter visual mode before yanking. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
|
I've encountered an issue with vim::SelectNext command in Helix mode. When I try to select the next occurrence of a word, it unexpectedly includes the two following appearances instead of just the immediate next one. Can anyone explain why this behavior occurs? {
"context": "Editor && vim_mode == helix_normal && !VimWaiting && !menu",
"bindings": {
"space n": "vim::SelectNext",
}
},Bildschirmaufnahme.2025-07-29.um.14.46.30.mov |
Beta Was this translation helpful? Give feedback.
-
|
I'm new to
Then we have #35687 and #34060, great to see helix development picking up some steam! |
Beta Was this translation helpful? Give feedback.
-
|
Double pressing v (entering visual mode and exiting it) returns to vim's normal mode instead of the helix normal mode |
Beta Was this translation helpful? Give feedback.
-
|
I think a good idea Is to go for "helix tutor" parity Or at least use it as a baseline Example: "for now the goal is to support everything from helix tutor except this and that" |
Beta Was this translation helpful? Give feedback.
-
|
Breaking Change
|
Beta Was this translation helpful? Give feedback.
-
|
this can be useful to us: #39261
Also, on a personal note, I've been using Zed with helix mode and it's really nice. |
Beta Was this translation helpful? Give feedback.
-
|
Still missing:
Add these features 🚀 🚀 🚀 and I'll use Zed day and night ❤️ |
Beta Was this translation helpful? Give feedback.
-
|
Is there any reason Edit: Created #40527 to add alt-i, alt-o, alt-p, alt-n |
Beta Was this translation helpful? Give feedback.
-
|
Currently, there is an action to toggle Vim mode, but no equivalent to toggle Helix mode. I think this would be a nice addition. |
Beta Was this translation helpful? Give feedback.
-
|
One issue with the lack of primary selection: if you select current+3 words down with |
Beta Was this translation helpful? Give feedback.
-
Could there be an easier workaround - allowing commands to set Yes, this seems like a viable option. Even currently you can have this workaround: you can have a sticky mode, but only for a short period of key sequence wait time This creates a sticky "View mode" mapped to "v j":["action::Sequence",["editor::LineDown",["workspace::SendKeystrokes","v"]]],
"v k":["action::Sequence",["editor::LineUp" ,["workspace::SendKeystrokes","v"]]],Althout this one doesn't work in Insert mode with alpha keys since the typed key is not removed like for a regular sequence This cleans up the typed "v j":["action::Sequence",["editor::LineDown",["workspace::SendKeystrokes","alt-v"]]],
"v k":["action::Sequence",["editor::LineUp" ,["workspace::SendKeystrokes","alt-v"]]],
"alt-v j":["action::Sequence",["editor::LineDown",["workspace::SendKeystrokes","alt-v"]]],
"alt-v k":["action::Sequence",["editor::LineUp" ,["workspace::SendKeystrokes","alt-v"]]],If only you could manually configure the wait time for each of the groups and add which-key visual mode (after another configurable wait time) it'd be even a better version of Helix sticky modes! And you can only make some of the "menu" commands sticky rather than having the whole menu sticky. (the custom operator approach would still be better as it'd help avoid command duplication) Copied the explanation to a separate thread since its usefulness isn't limited to Helix mode #41759 |
Beta Was this translation helpful? Give feedback.
-
|
Another idea on how to make creating all the various modes easier - is to make the base commands more powerful and accept arguments so that, ultimately, a mode would be a simple collection of keybinds that you can either activate as a "layer" (via a mechanism that doesn't exist but similar to the one suggested #6447 (comment)) or use piecemeal in any "mode", for example, to run a helix move-by-word command (that selects the latest word) vs a vim move-by-word command (that doesn't select anything) you'd simply pass |
Beta Was this translation helpful? Give feedback.
-
|
upd: fixed in nightly |
Beta Was this translation helpful? Give feedback.
-
|
Created an issue regarding |
Beta Was this translation helpful? Give feedback.
-
|
@romaninsh Some of the things in your comprehensive analysis are no longer accurate, as the pace of implementations remains strong, and more features got implemented, thankfully 🙏🏼 Would you (or someone) like to do a revaluation on the current status, so I can update it in the main post? |
Beta Was this translation helpful? Give feedback.
-
|
Helix' |
Beta Was this translation helpful? Give feedback.
-
|
Line misindentified in Helix select mode when newline is selected, so moving to line beg/end differs in select mode vs normal mode #41743 |
Beta Was this translation helpful? Give feedback.
-
|
Another issue for your mighty list: subword movements do not select in Helix mode |
Beta Was this translation helpful? Give feedback.


Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
The definitive meta-discussion to make Helix mode on Zed truly great
Zed contains a nascent community-supported Helix implementation. While the basics should work, there are many features missing, and a significant number of smaller differences between how things work in Helix vs Zed. Zed's team would love to have your help working on these!
The point here is to join forces and capture the users input in the best way possible, listing what already works and what doesn't and bugs we find, so do comment anything you find that is not here yet
Notes
Some of the open issues/missing features
You should be able to find more open issues by searching with the
helixlabel like this or by making a generic search of the term helix like thisgw:vexcludes current character from selection #38121Some PRs that already got merged (contributors can use them as inspiration)
Table of commands still to be implemented
Toggle
alt-.ctrl-i,ctrl-o,ctrl-shelix_pasteaction that maintains selection after pastealt-u,alt-Uspace y,y|,alt-|,!,alt-!s,Salt-salt-(,alt-),(,)*,Alt-*nm i,m am s,m r,m dz,Zhelix_stickyviewmodeCtrl-wspace+ keysCurrent state of things and guidance on how to implement the missing features
Toggle
Helix basic support and structure
Status: General logic is well-developed and
Helixmode is quite usable. It no longer drops intovimmode and no longer relies on hacks forselect modeorword movement.Implementation lives under
vim/helix/and could use a small re-org to avoid PR conflicts and oversized files. I’m happy to overhaul theHelixstructure.Initial implementations of
ranges,objects, andoperatorsare in. This enabled the[/]motions and can be extended to covermmode (needs a bit more work).Helixmovements are more complex thanvim—many imply selection changes in both directions. Complex cases (likeAlt-arrow movements) now work and support multiplecursors.Repeat modifiersare working relatively well. Overall, the foundation is almost there.Movement
Missing pieces
Alt-.(repeat last motion). This differs from “last change,” so there’s no simple reuse. We need to remember thelast motionto repeat it.jump list(Ctrl-I,Ctrl-O,Ctrl-S) needs a proper jump-list implementation.Everything else is implemented or straightforward to add.
Changes
pastewhile preserving selection — currently paste resets/replaces selections. Needs ahelix_pasteimplementation.Alt-u,Alt-U).space yvsy—Helixonly uses theclipboardwhen explicitly requested; may need refinement depending on system clipboard settings.Everything else is implemented or easy to implement.
Shell
Requires some UI changes.
vimuses'<,'>!as the command prefix, but inHelixthat’s not relevant becausemultiple selectionscan be piped directly to a command. Needs a full implementation here.Selection manipulation
s,S— prompt for aregexvia UI, then modify selections (needs proper implementation).Alt-s— currently generic; likely re-implement to better mimicHelix.merge selections— no existing helper; needs to be implemented.primary selection—Helixcan rotate through selections;Zedtreats selections equally. This needs design thought.LSPactions —Helix’s built-inLSPpowers many selection ops;vimmotions don’t. Will require extra work.Overall: selection manipulation needs substantial work.
Search
*andAlt-*should search for the current selection with subsequentnto step through. Should be easy to implement.Goto mode
labels— worth a focused look; there may bevimfunctionality we can reuse.Other motions should be easy to add.
Match mode
objecthandling — partial, needs more testing.cursorsand existing selections.surroundreplace/delete needs particular attention.View mode
Propose a new
helix_stickyviewmode for sticky behavior. Non-sticky likely doable with keybinds innormal/selectmodes.Window mode
Ctrl-Wexists fromvim; may need minor alterations.Space mode
Can be populated via keybinds and adapted to match
Zedpanels better.Beta Was this translation helpful? Give feedback.
All reactions