Vim has enough options that different Vim users can have different workflows depending on their own personal preference. Some may love tabs more than buffers, other may love plugins more than staying “vanilla”. Therefore I love meeting other Vim users to talk about their workflow. Also it makes the Vim community interesting, you can pay attention to what people are doing and what direction the Vim community is headed in.
My Vim journey started about ten years ago. I hated it at first, it seemed overly bloated compared to nano
and notepad
. And frankly, there’s a truth to that. I think a notepad developer can be just as efficient as a hardcore Vim developer. I also think a hardcore Vim developer can be just as efficient in notepad as his/her own Vim setup. But I got it forced on me in a voluntary IT job and it grew on me. At one point I did everything in Vim except multimedia and www browsing. Even then for www/http I used Vim plugins or QuteBrowser. PDFs I rendered to text whenever possible. After suffering a few years as a Java developer I eventually caved into IntelliJ. I got tired of websites that didn’t load, syncing booksmarks, etc and started using Firefox. After some years I went through my Vimrc (now dusty) and removed a lot of plugins, removing close to 50. Now (2022) that I started a new job as a Python developer I am slowly seeing my return, albeit more sober on what plugins to use. I like Python notebooks, but mostly for show and tell.
I consider learning Vim as a journey. Other blogs I’ve read describe it in phases. Most people start at simple shortcuts. If they don’t burn out from what Vim lacks (working stuff out of the box, IDE features), they’ll eventually get some plugins. Then more plugins. At some point their Vim looks like a Unicorn harem. Then there’s the workflow changes, partially as mentioned in the first paragraph. Also, some shortcuts make a lot more sense once your Vim-foo is up to speed. E.g. once you are comfortable without your arrow keys and find your fingers sitting on the “h,j,k,l” (aka home) row, shortcuts around those keys are easier to use. At some point you might also regress on features to reduce the mental load and likelyhood of meeting failure whenever you update or install your plugins. Regressing is also useful in other contexts; I’ve had a few painful experiences where I’ve tried to teach Vim to someone only to find I can’t solve their problems because my Vim is so “juked up” on plugins I’ve forgotten how to use vanilla Vim.
First things first: I have to say that if you notice that several of your problems in Vim can be fixed by plugins, you should consider Emacs. “BUT EmAcS iS a FuLl OS” is kind of the running joke, but I feel they are way better at plugins and scripting. Maybe Vim will get there eventually.
What is Vim?
Lots of people have been annoyed by vanilla Vim. Bram Molenaar is the maintainer, but at least up until NeoVim came out, Bram’s claims was that Vim already achieved what most people wanted and further (rigid) development would not improve people’s workflow. However, Vim was written in C and had lots of bloat that let it support e.g. Solaris systems. Lots of people started (and continue to start) projects to rewrite Vim, but as it is with most software projects, they got a good head start and then the interest fades. These projects are written in Python, Rust and several other exciting languages. Implementing Vim keybindings is usually where most people get to, where they realize Vim is a beast of functionality, utilizing lots of clever tricks for file buffering and paging. This raises the arguably kitschy philosophical question: “what is Vim?”. And what is important about Vim? Why isn’t Visual Studio with Vim keybindings and plugins better? Well, I guess is Vim way more than an editor. Its about being reliable, fast to use and versatile. The latter property takes good design that you can’t ad-hoc your way through. And I must admit, if it didn’t introduce some small enough challenges, I’d stop. It can be fun to do a programming sessions with an editor “gotcha”, such as disabling shortcuts or being die-hard to functionality you haven’t tried before. And I suppose this is where the weird Vim addiction comes into play, I’ll paraphrase the Hacker Manifesto:
And then it happened… a door opened to a world… rushing through the phone line like heroin through an addict’s veins, an electronic pulse is sent out, a refuge from the day-to-day incompetencies is sought… a Vim executable is found.
… And leave it at that for now
0 comments