When I was in high school I found Sublime Text and learned “multiple cursors”. Since then, I’ve transitioned to vscode, mainly because I need LSP (without too much configuration work) for my work.
I keep hearing about how modal editing is faster and I would like to switch to a more performant editor. I’ve been looking at helix, as the 4th generation of the vi line of editors. Is anyone using it? Is it any good for the main code editor?
The problem that I have is that learning new editing keybindings would probably take me a month of time, before I get to the same amount of productivity (if I ever get here at all). So I’m looking for advice of people who have already done that before.
My code editing does involve a lot of “ctrl-arrow” to move around words, “ctrl-shift-arrow” to select words, “home/end” to move to beginning/end of the line, “ctrl-d” for “new cursor at next occurrence”, “shift-alt-down” for “new cursor in the line below”, “ctrl-shift-f” for “format file” and a few more to move around using LSP-provided “declaration”/“usages”.
I would have to unlearn all of that.
Also, I do use “ctrl-arrow” to edit this post. Have you changed keybindings in firefox too?
I use Helix
TLDR: Yes I think helix is worth trying out. It has some missing features but it is an amazing piece of software.
Yes I use helix daily. It is very fun to use and you can do many things faster. It is particularly good when navigating a (large) codebase you know fairly well. You are able to jump around and find/edit relevant code very quickly.
Compared to vs code:
Compared to neovim I think it is:
The downside of helix compared to both neovim and vscode is that it does not have plugin support yet so you will need to use other tools in combination with it to get an equivalent experience. Here are some tools that are commonly used with helix:
Helix really shines when:
I recommend you use the tutor (
hx --tutor
) for a few minutes each day to learn the keybidings.Thanks for the overview. I’ll work with tutor and see how frustrated I get :D
Regarding language servers:
Recently, I got into this philosophy of “every project needs a declarative environment”. It means that there is a committed file that should contain all tooling need to work with the project. Compilers, formatters, test runners and also: language servers.
This fights with vscode extensions which try to be clever and download their language server / bundle it into the extension itself. “No, rust-analyzer, I don’t want your build because it does not work with xtensa target arch I’m using in this project”.
So actually, this ties nicely with helix not providing the language servers itself, but allowing you to bring your own.
Yeah I agree, I like that aspect too!
I happily use Helix for Rust, etc projects, and as a general editor. I switch back to VSCode for TypeScript/Svelte projects because the plugins make it more productive for me. I do miss the editing experience and need to check if there’s a VSCode plugin that lets me not confuse my muscle memory.
Helix was the thing that finally made me remap my caps lock key to
esc
.