DEV Community

ik_5
ik_5

Posted on

1

What I've Learned About My Editing Skills

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.

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay