Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 4, 2019 07:56 am GMT

Vim: from foe to friend in 9 minutes

Lessons from 3-years of intensive learning

TL;DR
Using Vim is by-far the most productiveness-enhancing, enjoyable and rewarding tool youll ever adopt. This post was an idea I had for a long time; there are literally endless pieces of information about Vim out there, and every time I started writing I thought I was just adding to the chaos. I feel it became too important to ignore, too much of a productivity change, and probably the best tool I have ever decided to take upon learning, and so Im sharing my process. This an opinionated post about how I think anyone should start. As I usually prefer to get solid procedures and actual action items, this is what I tried to create here, so readers dont lose themselves in the sea of information out there.

For years Vim was a stranger to me. In one of my first job interviews as a junior, the recruiting manager wanted to test my limited set of skills and asked what my favorite IDE was. My answer was something like Notepad++. Needless to say, it wasnt quite what he was expecting.
He dug further and asked, What do you think about Vim?
I replied: Vim?? isnt that this console thing no one knows how to exit?
Long story short, I didnt get the job

To me, Vim was this CLI editor sysadmins used in videos and a kind of a hack-tool used by hipster developers around the world.
Why would anyone do that to himself? I asked myself and others more than a few times trying to understand whenever I met another enthusiastic user.
I genuinely wanted to know why are people talking about it so much, why would anyone use it? How can anyone be so motivated to use and improve their flow with Vim continuously when its such a terrible tool to use.
Whats wrong with modern editors?

So I tried it out. a lot.
I took Vim for as many test drives as I can count, there was a point I wanted to use it to prove myself I can. It was a Nemesis to me, and I couldnt deal with it. I got to a point I made up my mind that Vim is a religion. Theres a bunch of people who believe in it with all their hearts and just the same amount of opposers, like me that couldnt see the light. So I left Vim aside, but couldnt help keep thinking about it as I kept noticing other professionals across dev communities speak so highly of it. Heck, even on Silicon-Valley [s03e06] the fight is over spaces vs. tabs and Vim vs. Emacs. Really? I thought, Vim vs. Emacs?, people dont use *standard *editors?

The real change happened when I met one of the most talented backend developers I had ever worked with. He was so enthusiastic about Vim, had so much knowledge, and most importantly worked so freaking fast and smoothly I had to know what he was doing. This leads to the beginning of my why

Why

  1. Vim is always there; on any *nix machine, Mac and soon even Windows machines. You can always find it running natively on your OS. Vim (or its predecessor VI) are already installed, so even if youre not going to utilize it for everything, you probably want to know it pretty well. You want to be able to find your away around remote-servers-editing quickly.

  2. Its productive
    This is the holy grail of using Vim; once you master the basics, youll become so ridiculously fast, you really wont able to go back. Youll start looking for those quick moves when writing messages or when chatting online. Writing any code or editing blocks of it becomes smooth and fluent in a way you probably never knew possible.

  3. Integrations
    Vim is so powerful it has integrations with just about anything you can think if. I dont even leave it to git commit, push, browsing through history and what not. Took it one step further and created my flow of solving merge conflicts right from Vim!

  4. Awesomeness
    Not sure if I should address this as a real factor, but being honest, Vim is an enjoyable tool. Every time I use it, including when editing these lines, I enjoy my shortcuts, movement abilities, macros, and repeatable commands.
    Think of yourself in the office using it; your colleagues are going to be so impressed theyd start asking for resources and tips. I know because thats how I started and how other colleagues of mine started after me. We all can say the same thing, after reaching a medium proficient level: you become so freaking fast, other editors stop making sense. You can think fast, work quickly, and never feel an idiot again.

  5. Its right
    Hands down, how many times did you find yourself editing over 20 locations in a single file, reaching for your mouse over and over, knowing in your heart what youre doing is either wrong? How many times did you feel like you were wasting time on reaching UI buttons or looking for the right click to help you make the change? For me, the answer was dozens if not hundreds of times, until one decided to put a stop to it.

  6. Its light; its so light it takes 10% of your machines resources. Check out the comparison below describing average memory consumption of popular IDEs:

A comparison of VIMs average memory consumption taken on a multiple Linux serversA comparison of VIMs average memory consumption taken on a multiple Linux servers

How

Honestly, Vim is not the most accessible tool to adopt. Hell, its hard.
Vim has a very steep learning curve, but rest assured: if you try, dont give up, and be consistent, its 1000% rewarding.

Time vs. Productivity of IDEsTime vs. Productivity of IDEs

The visual above is a simple demonstration of my learning curve experience. With any other IDE, I became semi-productive quite quickly (semi is only said in retrospect after knowing what Vim can do..). However, the green Vim curve shows my starting struggle, which, after a while turned to an incredible skill.

How did I do it?

After a few brutal fights, having my fallback IDE to run back to crying with the tail between my legs, I made a decision. Heres how I did it:

  1. Got a nice small notebook I could carry around

  2. I bought the awesome Practical Vim by Drew Neil both in hardcover and for my iPad to read on the move

  3. Every night before going to bed, I read one tip the book is very intelligently built like that for easy, slow studying

  4. The IDEs on my mac were removed, no more VSCode or PyCharm arms to run back to. It was Vim alone.

  5. Ive signed up for Mastering Vim Quickly newsletter and followed them on Twitter, where I was constantly learning new tips

  6. Ive started my online list of tips I learned and picked up on the way, which I maintain to this day
    Talking about new tips, these are endless, even after years of work youll find yourself applauding another feature you never knew of. Vim is an infinite jar of candy.

Rotating the joke on VIM dont quit the fight; its worth itRotating the joke on VIM dont quit the fight; its worth it

Gradual learning

After a few days of reading, I slowly started getting the grasp of movement in Vim using the famous hjkl, and learned to search and save keystrokes. I began understanding how Vim operates; What's the fastest and most elegant way for doing every single change. I started finding myself getting out of bed after reading a tip to try it out, writing it down in my notebook.

Diving right in may not be for everyone. If youre not yet willing to drop everything else and using Vim alone, you may want to try out some excellent integrations for IDEs; a popular one is VSCodes Vim mode which adds most of Vims functionality and abilities right in your beloved (and soon to be ditched ) IDE. I tried it and had a hard time finding 100% of the functionality I was used to, so I went straight back to full-on Vim.

When

Funny question to ask, but right now. You may be launching a new project or starting a new job; these are just a trigger to adopt a new life-changing tool. Nothing has to be dramatic; you can pick it up as you go. As long as youre consistent and determined, within a few weeks, youll get to the point discussed earlier, where no other tool is required any longer. Youll be past the line of productiveness; where youre faster in Vim than anything else.

Who

Jokes aside, mastering Vim is a life changer for any writer. Yes, its designed to edit code, but I got to a point Im writing my text there since I feel more confident, productive, and comfortable. Heres a nice piece: Vim for writers.

Whether youre in IT, DevOps, full-on developer, the occasional script writer (and scriptwriter ), or data analyst: everyone can use Vim and enjoy it to the max. I got to write Python, Golang, Crystal, TypeScript Bash and a lot of text (these lines right now, e.g.). Theres no textual usage I can think of which Vim is not a perfect solution for.

Customizing

By now, you learned that Vim is one of the most versatile, customizable tools out there. Not only it has endless plugins, but you can also change your configuration file (The .vimrc) and can pretty much change everything.
Having that said, you may want to start Vanilla. Heres a good video that can save you a lot of plugin installations just by knowing Vims built-in abilities.
The one thing that is recommended to use is Tim Popes Vim-sensible plugin.

Plugins

Having one of the largest enthusiasts communities out from there, Vim has endless plugins, most of them can be found on GitHub. A word of warning though, while plugins are helpful and enjoyable, they have a few downsides with them:

  • Theyre heavy on Vim; you may notice lagging and longer response times with some highly demanding plugins

  • They may be conflicting with other plugins/configurations; (usually, you wont notice that with popular plugins)

  • Theyre masking some of Vims abilities. You install a plugin that has pretty good vanilla functionality in Vim already Check yourself before running to every shiny plugin

  • They may be slowing down your leaning, adopt them with care, and slowly, only when you feel the need

Heres the rather short list of plugins I use, I try to maintain it by removing the ones I dont use anymore occasionally, you can also find the full list of them together with my .vimrc on GitHub.

Thats it, and thanks for making it this far!

I hope this post helps you get started and find your way towards an enjoyable productivity change. I know the internet is full of information and ideas, but since I had to figure out for myself what works best, and made it only after a few attempts, I thought of sharing the process with some other people looking for some guidance. I hope you enjoyed reading and will share this with anyone looking to make his first steps into Vim!

I invite to take a peek at my own .vimrc configuration, suggest changes or take ideas.

My name is Omer, and I am an engineer at ProdOps a global consultancy that delivers software in a Reliable, Secure, and Simple way by adopting the DevOps culture. Let me know your thoughts in the comments below, or connect with me directly on Twitter @omergsr.


Original Link: https://dev.to/omerxx/vim-from-foe-to-friend-in-9-minutes-2np0

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To