I Use NeoVim btw (And You Should Too)

Table of Contents

header-image

Introduction


NeoVim has always fascinated me ever since I saw it used for the first time by ThePrimeagen. The efficiency of text editing, the minimalism of the interface, the closeness of the editor to the terminal—these were just part of what instantly intrigued me. Inside me, the desire to try it, to make it mine, kept growing stronger.
But let’s start with the history—we often focus only on the final product, but for a developer, I think it’s interesting to know what came before.

History of Vi, Vim, and NeoVim


Vi (1976-1980s)

Historical Context

In the ’70s, interaction with computers happened through teletype terminals (without screens) or very primitive visual displays. Text editors were extremely basic. The most used was ed, a line-by-line editor.

Creation of ex and Vi

  • 1976: Bill Joy, a student at Berkeley, develops ex as an improvement over ed.
  • Vi (short for “Visual”) was born as the visual mode of ex.
  • Vi was included in BSD Unix. It was modal: one mode for inserting text and one for commands.

Key Features:

  • Fully keyboard-driven.
  • Optimized for slow serial lines (low latency).
  • Virtually no dependencies.
  • Spread ensured by Unix: Vi became the standard.

Fun fact: for decades, Vi was the only guaranteed editor available on every Unix system, becoming synonymous with “system editor”.

Vim – The Improved Evolution (1991-2010s)

The Origins on Amiga

  • 1991: Bram Moolenaar writes Vim on Amiga as a free clone of Vi.
  • Meaning: Vi IMproved.
  • Made available on UNIX, Windows, DOS.

Why “improved”?

  • Vim took Vi and made it programmable, extendable, configurable.
  • Introduced:
    • .vimrc config files
    • Macros, mappings, abbreviations
    • Multiple undos
    • Syntax highlighting
    • Vimscript scripting for automating behavior

Important Versions:

  • Vim 5 (1998): Introduced loadable plugins.
  • Vim 6 (2001): Support for split windows, tabs, buffers.
  • Vim 7 (2006): Added autocomplete, spell check, undo tree.
  • Vim 8 (2016): Finally added asynchronous support, albeit limited.

Main issue: Development was centralized around Bram. He was very conservative, which slowed the adoption of modern features.

NeoVim – The Revolutionary Fork (2014–present)

Project Origins

  • 2014: Announcement of NeoVim as a fork of Vim 7.4.
  • Created by a community tired of the architectural and bureaucratic limits of Vim.
  • Main goals:
    • Codebase cleanup.
    • External APIs to extend NeoVim from other languages (Lua, Python…).
    • Asynchronous execution for modern plugins.

Distinctive Features

  • Lua as the configuration language (much faster than Vimscript).
  • Native LSP: language support like VSCode, out of the box.
  • Native Tree-sitter for advanced code parsing.
  • Modern interfaces: external GUI editors (e.g., Neovide, Goneovim).
  • Modern plugin managers (e.g., Lazy.nvim, Packer.nvim, etc).

Evolution

  • Explosive community growth.
  • Complete ecosystems based on NeoVim:
    • AstroNvim, LunarVim, NvChad
  • Constant and transparent progress on GitHub.

Today NeoVim is considered the most advanced terminal editor in the world, with modern support, integration with professional tools, and excellent performance.

My Experience


The Beginning

When I started, I couldn’t adopt NeoVim as my editor right away—I lacked knowledge and skill. So I often gave up, but the urge to make it work, to understand it and configure it properly to make it usable as an IDE kept coming back. At the time I was attending a bootcamp and using VSCode for everything and IntelliJ for Java, and I wanted at least to make it usable enough to do a first switch.

The Kickstart.nvim discovery

Everything changed when I discovered Kickstart.nvim. Kickstart.nvim is a base configuration that makes NeoVim usable as an IDE from the start. The configuration is all in a single file with many comments explaining what is happening and why, but especially how to change and implement your own configs. From there, it was all downhill—I started experimenting with my own configurations. Every time something came to mind while coding that could improve the experience, I’d find a new plugin or simply tweak NeoVim’s base config.

Now I use NeoVim for everything, and if I encounter a new technology it’s not yet configured for, I know I can configure it—I know there’s always a way. I can even code and run Java now.
The key, at some point, was organizing the big Kickstart Lua file by splitting it into several separate files, creating a structured layout. That way, if I need to add a new plugin, I add a file in a specific spot; if I need to add or modify shortcuts, I know I have to go into remaps.lua, and so on.

I highly recommend making your own experience with NeoVim because I’m sure you won’t regret it :)

This is my current configuration, I keep it in a GitHub repository so that when I make changes, I can pull them on other machines where I use NeoVim. It also makes installing NeoVim with my personal config on new machines much easier.

The Advantages of NeoVim


For me, NeoVim’s advantages are numerous:

  • Completely Open Source.
  • Vim motions
    • The secret to being so efficient—Vim created these Vim Motions that allow you to move through and edit text quickly without touching the mouse.
    • Here’s a video series by ThePrimeagen that explains them in depth: Vim As Your Editor
  • Fully configurable
    • Everything is customizable (shortcuts, behaviors, auto-commands)
    • Every time I want to change something, I know where to look because I studied the initial configuration and built on top of it.
  • Minimalist interface, free of bloat.
  • Integrated as much as possible within the terminal.
    • This even allows me to use it through ssh on other machines—I think that’s a big advantage.
  • Its lightweight nature and fast execution.
  • Endless plugins created by the community to adapt NeoVim to any situation
    • Since these plugins are open source, you can also customize them by forking and editing the source code to shape the plugin and the configuration to your needs.

Try All the Options


I think that to become better developers, we should try everything—all the technologies everyone talks about, understand what it’s all about, experiment, and form our own opinions.
I firmly believe that the things that scare us because they’re complicated or hard are exactly the things we should try and learn. That’s because they scare us for being difficult, but we know the effort would be rewarded.
Think of all the things that seemed very difficult or even impossible before you learned them. For me, it was driving—at first, the mere thought of driving gave me anxiety. Now it’s second nature, and I think that’s a wonderful feeling of progression and growth.

Know Your Tools


Whether you use VSCode or NeoVim or any other IDE, take the time to learn exactly everything it can do. As software developers, we spend many hours a day in these tools—it’s definitely worth knowing them deeply in order to become better developers.
I think NeoVim forces you to do exactly that—in order to make it usable, you have to understand how it works and everything it can do. It pushes you to configure it exactly to your personal needs, to find tailored solutions through Lua scripting.

Conclusion


Ultimately, NeoVim is not just a text editor — it’s a continuous learning experience, just as I believe a developer’s life should be. It’s not perfect for everyone and requires an initial investment of time and energy, but the reward is a development environment that speaks your language and adapts to your way of working. It’s not just about writing code — it’s about rediscovering the joy of doing it with awareness, control, and precision. In any case, whatever IDE you choose to use, I strongly recommend getting to know it in depth and fully understanding everything it can do.


Vim As Your Editor
My NeoVim configurations
VimHero to practice vim motions
Kickstart.nvim