Home About

Setting up helix and graduating to terminal text editors

2025-11-11

Finally setting up a terminal text editor and not succumbing to despair

Written by 9b

Text editor woes

I’ve never really “graduated” to terminal text editors, beyond the very basic uses of editing commit messages and when ssh’ed into a server command line. For any “serious” work, the mental load of having to remember a number of complicated key combos, or chords, or what have you, always seemed to take away from the actual work. Nice, pretty WYSIWYG editing using VS Code (or before that, Sublime) with language servers set up and ready to use always felt more approachable and, importantly, like I was getting to do the actual work instead of working for my setup.

Even with that, I’ve grown to appreciate a lot of the slightly more complex ways of working with code that VS Code gives you - jumping to lines without leaving the keyboard, multiple line editing etc. - which do not come close to what vim, nvim, or God forbid, emacs offer in stock form. The draw has always been there. But choosing an editor to go with has been tough. Emacs i gave up on pretty quick; I was already familiar with the basics of vim from ssh sessions and other basic use cases, so emacs, even in evil mode, felt weird. Pure vim also fell out of favor quick. Handling an endless amount of dotfiles gets old quick, another reason I’m using fish instead of Zsh or others - there’s a lot in the package already and it feels easier to slightly change habits than to go deep into configuration and forget what I was working on in the first place. Nvim provided improvements in some regards, but the lack of defaults made it instantly unattractive as well. I want easy language servers! Ideally in the box.

Helix (and supporting acts)

Helix was the first editor providing that specific thing out of the box. Some will scoff at the kind of haphazard combination of keybinds, somewhat halfway between Kakoune and vim, but as mentioned before, I find those kinds of habits easier to change than building out my own environment. Additionally, there’s a lot of support and interest from the community in getting it close to the VS Code-like “almost-IDE” experience. With tools like Zellij and Yazi, a integrated file tree and other tools as panes along the main editor are easiluy realized without too much configuration. Most importantly, these all being tools born in an age of ample screen real estate and high resolution displays, there’s a lot of hints! This makes it so much easier to get used to all the chords and commands, since for more complex stuff only the first character needs to be remembered.

So, setting up Helix in around two hours of waiting for CI/CD pipelines to run was feasible for me, and it worked out quite well, with nothing in the way of inscrutable error messages or having to learn a whole other system, language or dependency. This bodes well for the “other” part of the project, namely me setting up this blog. In the past, this would have already failed in my frustration of setting up the tools to do it, had I used this project as a way of getting into new tools.

The Setup

So, what is actually part of this setup? For tools we have, in order of appearance:

  1. Fish: I use fish as my shell. It works well and I like the functions.
  2. Zellij: My terminal muxer of choice. I have no experience with tmux, Zellij is great though. Good on-screen hints. I run Zellij both to encapsulate Helix and things I want to run alongside, but I also use it to spawn windows “inside” my current helix session.
  3. Helix: The star of the show - this project is mostly about editing text, so the editor is very important!
  4. Yazi: The file explorer I integrated into Helix with the help of Zellij. I use a floating pane to encapsulate it.
  5. Lazygit: My Git solution of choice, integrated in the same way as yazi.

What’s missing? So far, I have everything I need in this setup. For building this little static site using Astro, everything is sorted. What I don’t have right now is any indication on how I would debug things. Maybe there’s a python project in the future that will allow me some more testing in that direction.

I want the configs!

Understandable, and soon they will be published as a separate post. Right now, I’m still getting to grips with the setup so there might be changes I want to include. There’s also attributions I need to make.