When doing one change, other changes quickly follow! I’m not exactly how it started, but for a couple of days now I’ve been using Helix(https://helix-editor.com) as my go-to editor. Helix is a terminal based modal editor written in Rust, and one of the strong points is the out of the box experience: It has support for LSP and tree-sitter enabled, and as long as a language server is installed, ending with LSP support is a breeze.
At first, the term “modal editor” gives the impression that Helix is merely a variation of vi/vim/neovim, but what sets it apart is the way to change text. Modifications and other actions work on the current selections (yes, multiple selections are supported), and there are a number of ways to select text: Select a word, a line, a tree-sitter object, visually by cursor motions, and much more. Once selected, different text modifications are possible, but likewise, it is also possible to modify the selection itself, for example to search within a selection to generate a new, smaller selection.
There is an interesting parallel to Forth, where you push the operands on the stack, and the perform operations on them. What’s not to like :)!
The only downside is that there is at the moment no plugin system, but I found working with the Rust-based Helix code actually quite nice, and it seems not too hard to extend it if needed.
That’s not enough with the changes though. The alternative git
frontend (and possibly evolution)
jj(https://martinvonz.github.io/jj/latest/) popped up, and wanted to
be tried. In my case, being able to work on multiple changes at the
same time in a simpler way than git branches was one of the main
drivers. I’ve been using StGit(https://stacked-git.github.io) for a
while, which is a great a tool to work with sequential changes, but
jj
goes one step further and supports more complex commit structures.
It really seems like a graph editor, and I’m curious what kind of
graphical user interfaces will be built on top of it, even though I’m
very likely to stick with the terminal.