Does someone have experience with Helix? Because it seems to be missing some very basic functionality like NERDTree which makes it kinda unusable as main-editor. Does someone use this or have tips?
You should choose software based on what you think is good, not what's written in Rust. There could be a positive correlation but it's not a guarantee.
I tried helix at some point, there are some nice thing about it, but the bottom line was that too much is missing and I stuck with neovim.
I think you can get a file tree by using it in tmux/zellij with yazi at a separate pane. I found yazelix in a quick search. Never used it, but could address this need.
Some of my problems with helix were/are:
No folding (will be implemented eventually but not soon)
No plugin system (also, eventually(tm))
Multi cursor is fine and all, but I don't think it's a good replacement for vim's search and replace. In vim I can see a preview of the whole s/r operation while I edit the command (:%s/.../.../g) and get it right. Also in vim it's a single undoable action.
Some good points:
Fast
More minimal set of commands that should be easier to learn
Comes with many themes (and some are not even terrible )
Easy config (for the functionality it does have)
The command order of (Selection > Action) makes more sense to me logically than the vim order.
I actually think multi cursor is cool (but honestly I just don't get it as this way-of-life core feature that replaces other, better methods to edit)
Sorry, but I regard starting a reply with "You should" not as the most friendly form for a conversation. And of course there can be good reasons to prefer software written in a special language. For example, I typically prefer software written in a language that I am familiar with, so that I am at least theoretical able to fix issues or to extend it. Also I avoid software, for which I have to install one more compiler or interpreter. I would also avoid software written in a language without an active and friendly community, because in this case it can be hard to get any form of support. And finally, the security aspect should matter too -- for languages like C the risk of vulnerabilities should at least in principle be larger. On the other hand, the phrase "fan of" might not be the best way to express his reasons.
[EDIT] For people wanting a powerful editor written in Rust, Lapce is also an option. The Lapce devs seems to have spent a huge amount of work into that editor, and they have even created a complete GUI toolkit, I think it was called foem.
When moving to a terminal based setup, I ended up using WezTerm (also written in Rust if that matters to you) instead of Alacritty as I found it to be much more easily configurable (and offer many more configuration options). I also found the author of WezTerm to be more approachable
I've daily-driven it for about 6 months or so. Although, it is also the first terminal editor I've used so I don't have experience with Vim beyond very basic usage. A file tree is something that the Helix authors want to support (either through the future plugin system or built-in). I've found that space f works fine for my navigation needs, personally.
Also beware that Helix isn't Vim. It's not trying to be Vim either. It's a derivative of Kakoune which takes a distinct approach to modal editing than Vim -- it is based on multi-cursor editing. It'll take some getting used to -- as an example that @dupdrop points out, in Vim you might do :%s/.../.../g whereas the way you'd do it in helix is (assuming you've got a selection wherein you want to do the replacement), s...<enter>c...<esc>. (This is a single undoable action).
I've gotten quite used to Helix, and since then when I've tried Vim, I can't adapt to it easily. I would presume that a Vim user trying to switch to Helix might have similar difficulty in that regard, so be ready for a different editing experience.
One thing I do quite enjoy about Helix is that for the most part, components of an editor which are important to the editing experience have been prioritized by the authors to be built into Helix, as opposed to needing to be put together in a brittle manner by way of plugins. Sure, this means less configurability, but this is a trade off I'm willing to make to not have to fix my editor as often.
I cannot say what @dupdrop meant exactly, but in Vim :%s/…/…/g second … can reference capture groups or even be an expression. For example, I have once written .s/{start: \(\d\+\), end: \(\d\+\)}\zs/\=" # Duration: ".(submatch(2) - submatch(1))." ms" which uses both and that can even have state*. Having some script language is useful beyond writing plugins.
Is there a way in helix to search-and-replace with replacement being somehow based on what was found and make that a single undoable action? Not necessary proper expressions in some scripting language, something like :%s/\v(a+)(b+)/\2\1/g (regex with capture groups and replacement using them) is already very handy and I use that far more than substitute with expression.
* Not natively though, you will have to write something like [actual_replacement, extend(g:, {"global_variable_name": new_value})][0] where you create a list only for the side-effect of evaluating its second item and then discard that second item.
I've used Helix on and off - I think it is great, but still many practical little things that are not implemented yet, e.g.
in vim you get notified if the file you are editing has been modified in another process - not in helix.
you can't read a file directly into your current buffer - you have to open it in a new buffer, yank it, then bring it over...
Rust analyzer is super easy to integrate - not necessarily the case in vim. However - I've turned it off. Just too annoying the way it obscures the main text area with pop-ups and warning messages - that can not be cleared away.
I think the source code behind vim probably got unwieldy - the neovim project has done a lot to clean it up, but probably was time to start from a clean slate and rethink the keybindings, modes etc.
You could consider using ranger or similar file picker. Run it in its own tmux window or iTerm2 tab... If hx is your default editor, you can open the file directly - or you can yank the path into the clipboard and then paste it into an existing hx instance...
I think that should be fairly close to your NERDtree workflow?
Thanks for the suggestions all! And also thanks for this WezTerm suggestion.
I was looking for a Vim alternative because I was experiencing issues with Vim in iTerm2. I tried other terminal emulators but none satisfied my needs.
But WezTerm is really really amazing! Hands down the best terminal emulator I used until now.