I would definitely use it but the main disadvantage is that some keybindings work differently than vim. I understand that the keybindings may be better that the vim ones but after years of using vim I expect "x" in normal mode to delete the character under the cursor or "d" to wait for the motion before deleting anything. When this does not happen I get confused and angry. I think this would be a problem with most people that are using vim; it's very difficult to change your habits especially since you can't ever escape from vim because of its ubiquity.
Thankfully, some good people have released evil-helix, a soft fork of Helix which introduces Vim keybindings https://github.com/usagi-flow/evil-helix ; I tried it and it works great so I'll totally recommend it to people that have my problems.
As a final notice, helix (and evil-helix) works great in Windows (cmd). No need to install rust or anything. Get the .exe and you're gtg.
I'm glad to find out about evil-helix.
I did edit several modal behaviours but always stick to helix logic.
Things like the multiple selections and LSP support out of the box make it super worthy, aided by its fantastic help that when you press a multi-step character it shows a little hint of possible next options, including your own custom actions.
I do on occasion need to use bare vim setups, and while some commands have been remapped in my head, I still remember enough for quick edits.
With programmability, you can have a lot more state and contextual behavior. We get this kind of fine-grained stuff in Emacs with repeat maps, transient maps, heuristic DWIM behavior, state tracking per-buffer etc.
As LLMs lower the cost of having that 8th or 9th language, you can expect programmable tools to float up in the market.
I want an editor with OOTB configuration and a modal editing paradigm (probably Vim's) that isn't constructed around visually synchronizing every edit action. Doing the latter means relinquishing what's good about an editing language, which is that you needn't actively think about edits so much. It's not about speed, but freeing up mental resources to think about the more interesting programming tasks at hand. Editors that demand more attention are doing a worse job.
Helix would _ideally_ like you to tell it ahead-of-time everywhere you're going to make an edit by selecting all the edit points with multiple cursors, without a great option to fire edits on the fly. Ironically I found this worse for visual feedback when making larger edits---where it's most needed---because there are usually edits happening off screen, instead of only at the point of the cursor (where the latter can be easily repeated).
It ends up feeling less interactive and more like I'm using a batch editor due to this, which (I think?) was not its intention.
But as an extremely heavy user of vim repeat and macros for the last two decades, it strikes me as a wee bit audacious to so completely dismiss its utility.
It means that it's possible to add vim support for Helix but they don't want to?
And yes. Complaining about 100mb nowadays is ridiculous. You probably have larger logfiles sitting somewhere in disk doing nothing right now, regardless of your OS.
And those log files can be easily wiped or rotated (i.e. compressed, which can greatly reduce their size), as they should. You do not do the same with your other files, do you?
141MB: emacs-30.1-nodeps.zip
75MB: emacs-30.1-installer.exe (better compression? Contents seem similar)
27MB helix-25.07-x86_64-windows.zip
So there's still an Emacs distinction, it seems
(*not that these size differences matter in practice -- helix's "bulk" is all in compiled language grammars, each of which is not loaded unless you use the language.)
But regardless, if someone were to only ever installing Helix on their system, you might have a point. But you probably want to install many applications and if every applications starts wasting storage, you will soon run out of space.
But for desktop use, I think it's a good default to have everything "just work" out-of-the-box, because 110mb is nothing for typical developer machines.
> It comes with no grammars installed and it's up to the user to install what they need ... and the grammars can be shared with other editors.
I am happy for helix but i don't think it's a good fit for me.
I use Neovim. It does what i want it to do. It's one of the best available options. But, i am not completely satisfied with it. I personally want an editor with following:
* Modern codebase. Written from scratch.
* VIM Keybindings: I have muscle memory of Vim. I would like to use Vim Keybindings in my editor. I don't want to use any other keybindings even if they are proclaimed to be better. It must walk like vim and quack like vim.
* Good defaults. I hate configuring a lot. Neovim requires configuring a lot and need not always provide good defaults if it provided. Helix might have gotten this right.
* Based on Treesitter. Better they run Treesitter parsers as a WASM in WASM runtime just like how Zed and latest Neovim do.
* Extension System. But, I don't really favor lua, js or scheme. They just aren't my cup of tea. Maybe make it a wasm module with only necessary functions exposed to it. And configuration of those plugins in non turning complete configuration language.
* TUI and optional GUI
* LSP,DAP and Snippets support built-in(along with auto complete/suggestions, UI for Testing and Debugging)
* Oil.nvim like FS as buffer built-in
* Telescope/FZF-lua style Search built-in
* Git integration built-in (Maybe magit/neogit like GIT UI is welcome)
* Flash.nvim style Treesitter based Code AST Manipulation and Jump-to by label built-in
* Macros and Multi cursors
* Optional Cursor Style AI integration (Chat UI)
I respect the preferences of others but I think that most people overfit for muscle memory. I've switched OSes/editors/IDEs many times in my career. Every time, the first day or two I feel like "This is the worst fucking thing ever, I can't even type God damn it I want to set the computer on fire and become a farmer."
But... that passes. After a couple of days, I have new muscle memory and it's fine. It would be a shame to let a few days of discomfort control which software I use when software varies in its other capabilities so much more widely than just keybindings.
Now I’ve settled with Zed as desktop editor/IDE and still use vim on remotes. The context switch between a desktop app en cli is big enough that it’s never a problem. I don’t even use the vim bindings in Zed.
People can learn to juggle plates while riding a unicycle. They can play prog rock on two-necked guitars. A handful of keybindings is like a drop in the bucket for what our nervous system is capable of encoding.
But when exploration is (temporarily at least) an end in itself, trying a new sword, moat-digging technique, or trebuchet mechanism is inherently satisfying.
i respect the perspective of “i like my tools and have no reason to switch”.
what i feel is constantly missed if the understanding that your regular tools are literally one command away. learning something new doesn’t mean you can’t also take advantage of your muscle memory as necessary.
you craft an incantation that either does everything right or backfires. there’s no feedback while said incantation is being constructed.
practically, noun verb is much better of course.
I don't want or need pre-emptive visual feedback on every keystroke, because it's a tool I use every day. I want an editing language that allows me to develop a mental model of it, so that I can _avoid_ round-tripping most edit actions visually. The primary advantage of the Vi editing language has never been speed (though that tends to be a secondary one), it's that it saves you from thinking about editing. Visual feedback also adds noise; it's especially distracting when you're moving around reading code. It's not an automatic win except when you're learning. Finally, if I really need it, I'm using a modal editor! I can simply switch into visual mode for complex edits. That's the modal solution.
And in exchange for (ime, annoying) visual feedback I have to give up things like the repeat last edit '.' key, and operator pending mode (see :omap), and more... which isn't palatable to me. Of course, everyone works differently; different strokes. But it's not obviously better, in a lot of ways.
I _am_ envious of the complete default configuration Helix has. Though it seems like that's planned from Neovim in the near future, alongside multicursor (filed under 'super macros'), looking at their roadmap.
Helix is strongly inspired by vim, but it is not attempting to be a drop-in replacement, and it is not possible to configure it to have the same behavior as vim with custom key-bindings because there are many things that work fundamentally differently between the two editors.
* When you press undo, and the content to be undone isn't on the screen, it will jump your screen to the relevant section (good) but also with that same keypress actually undo the content (bad). Other editors, if the content is not on the screen, will not perform the undo action unless the content is actually visible. When I press undo in Helix, I'm always taking a moment to figure out what has actually changed because of this.
* This is a conscious decision by the Helix creator, so it's unlikely to change, but undo is not granular enough. It's chunked per insert mode operation. So you could type the entirety of a tale of two cities while in insert mode, you could be in insert mode for 30 minutes, and then go back to normal mode -- at this point, if you press undo once, the entirety of what you did in insert mode is undone. There is a feature where you can explicitly give the editor a save point for undo, and you're expected to press the key manually at your desired undo points. I really don't like this at all. I have bound some keys such as spacebar to this save point, so I get more granular undo, but this has some consequences such as clearing any selections that are currently present. I couldn't figure out a way to fix this without any side effects unfortunately.
I like Helix a lot, and I have no intention of changing editors, but there are some default behaviors which I think are absolutely baffling, and the undo granularity + expectation that you manually save checkpoints for undo is one of them.
Really? What editor does this? Vim/Neovim definitely will undo the change with a single 'u' press, and every GUI editor I've ever used will undo the change immediately with a single ctrl+z.
I just tested CLion, VS Code, and Sublime Text. I thought all three behaved as described, but only CLion did. I wish it was more common though, I find it a lot more intuitive and clear on what's happening.
How did you lose work, though, could you not redo?
And looking at the video it seems to be tui based. Nice. Gave me Emacs tui vibes.
Vim's inconsistent keybinds and behavior are what pushed me to Kakoune — which I find has more consistent and elegant bindings and behavior — in the first place, and Helix feels like a step backwards on that front.
Helix reverses bindings so that subject is first and verb is second
No "AI" shit pushed down your throat, and it takes the vim idea of applying actions to blocks of code, and swaps them around — you first select the code, and then apply an action to it. So you get visual feedback before doing the action and can clearly see what's going to be changed without having to spam visual mode all the time.
There was a decent article recently which explains some of the things I like in it also:
- how can you use a modal editor!?
- how can you use a nonmodal editor!?
Yep, that's precisely it.
It's not that it's difficult for me, it's that it's unnatural for me.
Different people's minds work differently.
In fact, I have a hard time editing in web browser textareas and Google Docs because of the muscle memory of vimlike keybindings and how I've associated them with tactile keyboards. (Smartphones and tablets don't give me this problem since they feel different, but laptop/desktop Google Docs editing throws me for a loop.)
Once you learn, modal is the way to go. It feels like playing a piano over an AST. It's so elegant for code and syntax trees.
I've been using vim keybindings in vim and vimlikes (JetBrains IDEs and VS Code) for nearly twenty years now. I learned most of it within just my first three months and have picked up additional surface area every year. I would still call myself a novice relative to vim masters, but you can get a ton of value from the basic movements and chords and occasional macros. All that to say, the learning curve might look steep, but it's shallower than you think and certainly well worth it.
The only reason I'd see non-modal being useful in a modal editor is as a crunch to learn and make the onboarding smoother. But you'd probably still want the first steps to be modal anyway, so I'm not sure it would provide much value.
Just jump in. It feels weird and slow at first, but let it grow on you. It pays dividends.
Some Google Docs <=> markdown buffer as a modal editor feature (or a plugin) would be cool.
I used to use modal tiling window managers on Linux, but since window managers are always second class on Mac/Windows, that never stuck either. I bounce around too frequently for it to work. I just suffice with tmux for now.
I was pleasantly surprised to find Discord's `s/search/replace` supported as an actual feature, though having it limited to just the last message is a bit limiting.
I'm asking because I noticed slight pixel misalignments in some of the videos. For example, in the File Explorer demo, the window border isn't a solid outline—it has small gaps in the frame. I’m wondering if using a terminal like Ghostty might fix that.
And I'm unsure what your problem is with the discussion in the ticket. I've now read the first comment (the feature request), and the last comment (the one you highlighted). Both sound totally reasonable to me.
I likewise thought the final response linked to was great. It was straightforward and to the point.
You can `C` to extend the caret down, or `s` to enter a multiple regex selection. It even keeps your copied/deleted text per caret.
I do wild things with it all the time, like changing a structured document into a completely different structure.
Understandable, for sure, but the number of users who want their own "simple" addition means it gets overwhelming pretty quickly. Helix has deferred work on most extra functionality until after implementing a Scheme extension language. Once that's done, adding features might be as simple as installing a plugin.
I use kakoune, because I like the client/server architecture for managing multiple windows, which helix can't do. The less configuring I do the better, but I've hardly done any in the past year. It's nice to have the option.
I do use kakoune-lsp and kak-tree-sitter.
Relevant Github comment: https://github.com/helix-editor/helix/issues/10389