I experimented with an impressive text editor called Helix.
I believe the work on this editor is fantastic, and I love its feature set.
However, I have one “small” issue with it — it operates very differently from (neo)vim key bindings.
I tried to reconfigure it to be as close to vim as possible, but I couldn't achieve 100% vim-like key bindings.
If you think I'm criticizing the editor, think again. It's awesome, and you should give it a try (at least for a month).
This post is about what I learned about my skills while trying the editor.
Some History
In the year 2000, I started using Unix systems (AIX, Solaris, and FreeBSD) as a user for specific services, and I liked them much more compared to Windows. By the end of the year, someone offered me to try something new called Linux.
He gave me a CD named Mandrake Linux, and when I booted my machine, I saw a nice GUI installation screen.
Back then, I was a Windows-based software developer (Delphi, VB(A), and some basic yucky C++), so it was very different for me.
A friend showed me a cool editor named vim and some tricks he did with text on it.
In 2003, Microsoft decided to obsolete a library that a startup I worked for used, and I decided to move from the MS world to Linux.
I think it was the best decision of my life.
I wanted to understand how to do the cool stuff I saw with vim, so I wrote a guide on how to do some basic work in VIM (in my native language) to help me learn vim.
The VIM Language
One big misunderstanding about vim for non-vim users is the lack of randomness when using keys.
You have a count of something, an action to do, and a movement of some kind.
What does it mean?
3yw
means to copy 3 boundaries of words (including spaces) forward.3ye
means to copy 3 boundaries of words (not including the last space) forward.3yb
means to copy 3 boundaries of words (including the first space) backward.3dw
means to delete 3 boundaries of words (including spaces) forward.3cw
means to change 3 boundaries of words (including spaces) forward.
Can you see a pattern?
That's the vim language, but it's more than that. You can do it on paragraphs, parameters, and more.
What does “more” mean? You have something called “text objects” that you can define, for example, “class,” "method," etc.
Skills, Damn Skills, and Muscle Memory
One of the issues I have with vim (I actually use neovim for several years now) is that I do not remember most of the language.
Even while writing this blog post, I needed to test what I've written regarding the vim language because I do not remember it by heart.
So, how do I use vim? Muscle memory.
I just do it, and it works for me for some strange reason.
And that's my issue with the Helix editor — it uses similar but different key bindings for doing the same things.
While I can find a way to re-learn it, I still need vim when I'm inside servers (for example).
But I can't figure out how to have two types of muscle memory based on the application I'm using. It's the same for me when I'm writing software.
I'm polyglot and use around 3 programming languages at the moment, and in each language, I sometimes write the wrong syntax at the start.
Also, it happens to me when I'm using different human languages that are close to each other (e.g., Spanish, Portuguese, and Italian) while my native language is not Latin-based.
But why the vim way and not something word processing-like (nano, pico, emacs, VSc, etc.)?
First, I live in the terminal. I love it, and for most stuff, it is enough for me, so Zed or VSc are not that.
Second, I find myself much more productive while using the vim language over word processing shortcuts.
So now I'm in a deadlock situation where an amazing text editor is unusable for me simply because it offers a means that makes me work well but with a different language.
Where Do I Go From Here?
Maybe I'll try Evil Helix: "A soft fork of Helix which introduces Vim keybindings and more."
But I think I wil keep myself at the moment in (neo)vim, until my skills becomes better.
Top comments (0)