DEV Community

Cover image for Breaking the Code: My Journey from VS Code to NeoVim
Dennis Lemm
Dennis Lemm

Posted on

Breaking the Code: My Journey from VS Code to NeoVim

In over almost a decade of web development, I've navigated through countless tools that have defined our industry. From my early days using Dreamweaver to the refined elegance of VS Code, I’ve tried them all. Almost.

Like many of you, I found comfort in the familiar, in the tools that promised to make my workflow smoother, faster, and more efficient. But recently, something changed. I discovered NeoVim — a tool I had long ignored, dismissing it as an ancient relic, out of place in the modern world of sleek, GUI-based IDEs.

And yet, here I am, writing this article in NeoVim, wondering how I didn’t make this switch sooner.

The Comfort Zone: Working in VS Code

Let’s be honest: VS Code is a fantastic editor. With its vast extension marketplace, user-friendly interface, and powerful features, it’s no surprise that it has become the go-to IDE for many developers. For years, I fine-tuned my VS Code setup—theme, extensions, keybindings—all designed to maximize my productivity. It felt like home, and I was comfortable. Yet, comfort can sometimes breed complacency, and I soon found myself questioning whether there was a better way.

But comfort can sometimes lead to complacency. While VS Code provided everything I needed on the surface, I started to notice the friction points—small inefficiencies that added up over time. The occasional sluggishness when loading large projects, the endless mouse clicks, and the constant context-switching between code and mouse started to wear on me.

A Reluctant Encounter: My First Brush with VIM

Like many developers, my first encounter with VIM was accidental, and it wasn’t love at first sight. I remember the panic of trying to close a file, furiously searching for a way out like a trapped animal. Esc :q! became my mantra, a quick fix that let me escape unscathed, but the experience left a sour taste in my mouth. Why would anyone willingly use this?

I avoided VIM so much that I even had a meme as my desktop background that perfectly captured the absurdity of the challenge of closing VIM. It was inspired by the movie Arrival, where Amy Adams' character, linguist Louise Banks, holds up a sign that says Esc :q!. The meme perfectly captured my frustration and the absurdity of my struggle with VIM. For years, it served as both a joke and a warning: 'Proceed with caution—this editor isn't for the faint of heart.'

The Turning Point: A New Perspective

It wasn’t until a colleague mentioned that he had switched to NeoVim that I began to reconsider. "You can be so much faster," he said, "once you get used to it." Faster? I was intrigued. Speed has always been the name of the game in development. Could NeoVim really offer something that VS Code couldn’t?

Around the same time, I stumbled upon a YouTube video by ThePrimeagen, where he demonstrated his lightning-fast workflow using VIM motions. Watching him fly through his code with precision and speed, I began to see the potential. Maybe, just maybe, I had been missing out on something all along.

The Gateway Plugin: VSCodeVim

To start my vim experience in my comfort zone I installed the VSCodeVim extension, and my descent into the rabbit hole began.

After three weeks in VSCode I decided to give NeoVim in the terminal a fair shot. Installation was straightforward. On macOS, a simple brew install neovim got me up and running. But it was clear that NeoVim wasn’t just a tool you install and start using; it’s a tool you shape, mold, and configure to fit your workflow like a well-tailored suit.

After a short chat with my colleague I began with NvChad, a preconfigured setup that promised a modern UI and essential plugins. It provided a solid foundation, but the real magic happened when I started customizing it to suit my needs.

Now, after ten days of working exclusively in the terminal with NeoVim, I find it hard to believe it’s me embracing this change. And it's so much fun! Who could have thought.

This VIM-emulating extension for VS Code, which Microsoft probably should ban, has led me to not want to use VS Code at all anymore.

The Learning Curve: From Frustration to Mastery

I won’t sugarcoat it — learning NeoVim was and still is challenging. My muscle memory, honed over years of using VS Code, fought me every step of the way. The first few days were a frustrating mix of excitement and regret. But with each small victory—learning to navigate without a mouse, mastering basic commands, and configuring keymaps — I felt a growing sense of empowerment.

NeoVim isn’t just an editor; it’s a way of thinking about code. It forces you to slow down, to be deliberate in your actions. And paradoxically, this deliberate approach ultimately leads to greater speed and efficiency.

Why NeoVim? The Unseen Advantages

So, what does NeoVim offer that other editors don’t? The answer lies in its philosophy and design:

  • Speed and Efficiency: NeoVim is built for keyboard navigation. Once you’ve internalized its commands and motions, you can move through your code faster than ever before. The lack of reliance on a mouse means fewer context switches and a more focused workflow.

  • Customization: With NeoVim, you’re in control. From keybindings to plugins, everything is customizable to fit your exact needs. The inclusion of Lua scripting for configuration offers a level of flexibility that’s hard to match.

  • Lightweight and Fast: Unlike many modern IDEs, NeoVim is incredibly lightweight. It opens instantly, even with large projects, and never bogs down your system.

  • Extensibility: The plugin ecosystem around NeoVim is vast and active. Plugins like telescope.nvim for fuzzy finding, nvim-lspconfig for language server protocol support, and treesitter for advanced syntax highlighting elevate NeoVim to a level of functionality that rivals, and often surpasses, other IDEs.

My Setup: A NeoVim Configuration for Web Developers

For those interested in making the switch, here’s a glimpse into my current/starter NeoVim setup:

  • Plugins: I rely on telescope.nvim for file and text searching, nvim-lspconfig for robust language support, and treesitter for syntax highlighting. I’ve also added fzf for a blazing-fast file finder and prettier for automatic code formatting.

  • Keymaps: I’ve remapped jk to Esc, which makes exiting insert mode quicker. Or using the vs code familiar moving entire lines by just type in J or K. And some other minor changes.
    These simple changes have already made my workflow more fluid. What's in your keymap? I'd love to hear about your configurations in the comments.

  • Custom Commands: I’ve created a few custom commands to streamline repetitive tasks, like quickly creating a new buffer or searching across files with a single keystroke.

The Verdict: NeoVim Is Worth the Effort

After several days of using NeoVim exclusively, I can confidently say that it has been a game-changer. It’s not just about speed — though that’s a big part of it — it’s about a deeper connection with my code. The minimalistic, distraction-free environment of NeoVim allows me to focus entirely on the task at hand.

Switching from a full-featured IDE like VS Code to a terminal-based editor like NeoVim might seem daunting, but the rewards are well worth the effort. If you’re looking for a tool that will push you to be a better, more efficient developer, NeoVim is the rabbit hole worth diving into.

Ready to Make the Switch?

If you’re curious about NeoVim, I encourage you to take the plunge. Start small with a basic setup, and you'll soon discover how it can elevate your development workflow to new heights. The learning curve may be steep, but trust me — the view from the top is worth every step.

Have you made the switch to NeoVim? Share your experience in the comments — I'd love to hear how it’s transformed your workflow.

The Next Chapter: Transforming My Obsidian Setup with Vim

As I’ve delved deeper into the world of Vim, I’ve realized that its principles of efficiency and keyboard-centric navigation extend beyond just coding. Inspired by my success with NeoVim, I’ve started transforming my entire workflow to embrace Vim’s philosophy, starting with my note-taking and knowledge management tool: Obsidian.

For those unfamiliar, Obsidian is a powerful, markdown-based tool that I’ve relied on for organizing my thoughts, ideas, and project notes. It’s highly customizable, and naturally, I began to wonder — could I bring the same Vim-powered efficiency to Obsidian?

The answer, of course, is yes. Obsidian’s support for Vim keybindings has allowed me to create a seamless, consistent experience across all my tools. Now, whether I’m coding in NeoVim or jotting down ideas in Obsidian, my workflow remains fluid and uninterrupted.

In my next article, I’ll dive into the specifics of how I’ve configured Obsidian to match my Vim setup, sharing tips and tricks that have made my note-taking process faster and more intuitive. If you’ve ever wanted to unify your digital environment under the banner of Vim, stay tuned — I’m excited to share what I’ve learned.

Top comments (0)