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 hate to be that guy but (neo)vim has served me well for too long. I don’t even use any crazy maps or plugins; it’s just comfy.
I’ve been using Vim for over 10 years. The first few years I used it badly. Later I took time to really learn it. Now I can use it fairly decently, but I still learn new things every now and then.
It feels like a really good investment. It’s been around forever, it’s gonna be around forever, it’s installed on almost all computers, and you’re going to be forced to use it at some point or another.
I really enjoy being able to go to any computer and starting up a familiar editor, without installing or configuring stuff. I also use a very vanilla Vim. If a coworker’s laptop or some server has a different Vim config than mine, I can usually do
vim -u NONE
to get back to a familiar place.Zed, Helix, and VSCodium for the Windows side.
I used to use VSCodium, but in my quest to touch the mouse as little as possible I switched to Neovim.
Well, I’ve successfully used LSP for Sublime Text before. Would probably still use it if I hadn’t transitioned to Neovim recently.
vscodium. Easy to use for beginners (i’m a beginner too), fully open-source, all microsoft tracking binaries removed. Aviable for Windows, Linux, macOS, darwin, propably bsd, or even as a webview, and supports a lot of architectures. Great for intrepeted languages, but supports compiled ones too
I use Jetbrains’ products for all my coding needs.
I used to use Jetbrains when I was using C# (mostly stopped now), because it was better that VS and tooling elsewhere is mediocre, on purpose by ms. But beyond that I don’t see the point. I say that as someone who has it for free through a student license. They’re such heavy editors, only kinda cross language, extension ecosystem not as good as vscode.
Great default keybindings though, I’ve adopted a lot of them elsewhere too
Do you use “home” “end” “ctrl-arrow” or any other interesting keybindings?
ctrl shif s - settings alt j - select next occurrence double tap shift - search functions and files
I’ll add shift + f6 for refactor rename and ctrl + 6 for redefining your function i.e. add/remove parameters and/or return value.
Same. Jetbrains makes the best IDEs hands down IMO and I say this after 20 years of coding and using numerous IDEs. I also use vscode as a backup but as more of a glorified text editor.
I used to use vim but imo it’s not worth the time it requires to configure to get working properly. These days I don’t code without a debugger so if there’s not a good way to set breakpoints I don’t even start
Amateurs. I use butterflies.
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:
- it is much faster and more minimal
- It might be harder to get things up and running than in vs code, e.g. to get auto-completion working in helix you need to have the LSP for that language installed. It can be a bit confusing if you have never done it before but it is easy once you have done it a few times.
Compared to neovim I think it is:
- easier to learn
- slightly faster - especially with large files
- you will have a much smaller/simpler configuration. AFAIK Helix has more features working out of the box than neovim (file picker, lsp support ect) and needs less configuration to get things to a workable state.
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:
- yazi - terminal file manager
- gitui or lazygit - terminal git user interface
- zellij - terminal pane manager
Helix really shines when:
- performance matters - I have edited files with millions of lines and had no trouble on codebases where my colleagues IDE’s become very slow.
- You want to use multiple cursors at times
- You want a simple or no configuration
- It is taking too long to learn the vim keybindings - vim keybindings are more concise but less intuitive and harder to learn
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’ve recently taken to kakoune which was one of the inspirations for Helix.
It’s not as fancy (in terms of built-in features) out of the box, but it’s very performant, integrates with tmux well, and for the C++ and Python I’m writing I haven’t felt the need for much beyond token based word completion and grep.
The client server model it uses has really let me improve my tmux skills because I’m working inside of it more and using it for editor splits.
I don’t know if Helix does this, but I’ve also come to love the pipe operator (where you just pipe a selection into some external program and the selection gets replaced with the output, so you can use the e.g. the sort command to sort text). You can also pretty easily add in custom extensions via command line programs.
Ahhh nice, I have thought about trying out Kakoune as it supports plugins. Do you use many plugins/find them useful?
Helix does have a pipe command also.
I’ve mostly just tweaked the configuration and built my own comment formatter/reflow command based on the comment style at work.
It’s almost more about what it doesn’t have for me, because what I’ve run into a lot with trying newer editors is they try and manage the code too much and the code base at work has its own style guide that doesn’t match what the editor tries to do. So the editor might make me slightly more productive … until I find myself fighting with it every 3 lines because of auto formatting or some language server quirk.
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
.
Helix because it’s easy to setup and hassle free, and it runs well on my 2009 ASUS Eee
I use neovim but i think helix is honestly better ootb.
I took a look at Helix when I was trying to learn vim and found it very easy to get started with, but was concerned about missing out on learning more standard vim bindings and functionality.
I found LazyVim + NeoVim got me pretty much the same experience without diverging as much from vim. Mostly I appreciate having access to a cheatsheet for commands.
was concerned about missing out on learning more standard vim bindings and functionality.
What do you mean? Do the standard vim bindings have some specific quality that you are after? Or do you work with many different servers and would have to use what ever editor is installed there?
Well I was mostly looking to learn vim and was trying to use Helix as a way to do that because it looked like vim, but with a commands window that popped up to help learn the commands. They’re upfront about making some breaking changes from vim though, and while I may not need to jump into a bunch of different machines that often I do like the flexibility of being able to hop into vi, vim, nvim, or some GUI editors with vim bindings relatively comfortably. So I found that LazyVim was more what I was looking for personally and nearly as easy to work with out of the box.
I am glad to see the project seems to be going strong. That was another minor concern of mine, there’s little risk of vim going anywhere, but I remember being excited about the Atom editor a while back and that just kinda faded away. If it passes the test of time I’d be happy to try it again in the future. I figure it would be easier to go from vim -> helix than vice versa.
Vscode has helix bindings.
seeing mscode/codium/vswhatever makes my brain hurt. geocities of code. now i am using Zed. problem solved.
Why geocities of code?
Do you have a minute to talk about my lord and savior VIM? Wanna see my dot files?
I keep hearing about how modal editing is faster
I’ve always been skeptical that optimizing text input speed would make a significant difference to overall performance. IMO if you are unhappy with your setup then look around but if you’re not you don’t need to have FOMO about it.
That’s the thing: I do feel vscode being slow. On my work machine, it’s fine - it takes about two seconds to open a project from start. But on my older laptop, that’s a solid 10 sec before I can start editing.
It depends. For fixing bugs, text editing speed does not matter. For explorative and iterative design it can matter. It just needs to be fast enough to not distract you or hold you back