The Story of NeoVim

The Only Bamboo
243 followers
10 Video Views·Apr 6, 2026
Cut Code Review Time & Bugs in Half. Instantly In Neovim - https://www.coderabbit.ai/
This is the Story of NeoVim- Neovim didn’t appear out of nowhere , it was the heir to a decades-old tradition, one that began in California in the 1970s, when a graduate student sat down at a PDP-11 terminal and wrote the first version of VI.
A hush settles over the auditorium.
On stage, a quiet Dutch engineer adjusts the microphone.
Bram Moolenaar, creator of Vim, has been fielding questions from a loyal audience.
Someone asks how the community can ensure Vim's future.
Bram pauses, then smiles faintly.
Keep me alive.
It lands like a joke, but not a light one.
For over two decades, Vim has been his domain alone.
Every commit, every feature request, every line of code has passed through him.
Stability came first, new features rarely.
Hardly any new features are going to be added now.
He had written in 2011, warning that even the smallest change introduced new problems.
The audience chuckles politely.
But the truth is clear.
Vim's future rests on a single man.
And that reality feels fragile.
What happens when the gatekeeper isn't there to hold the key?
The answer would arrive not in that auditorium,
but in an email thread months later from a frustrated developer who was done waiting.
His solution would be called NeoVim.
To understand why this fragility mattered, we need to trace the lineage.
NeoVim didn't appear out of nowhere.
It was the heir to a decades-old tradition,
one that began in California in the 1970s,
when a graduate student sat down at a PDP-11 terminal and wrote the first version of VI.
Its design is strange, even brutal.
Mode's separate movement from insertion commands a terse cryptic,
but in practiced hands, it's fast, brutally efficient.
VI spreads quickly with Unix.
By the early 80s, it's everywhere.
VI became a standard bundled with every Unix machine.
But far from California, in the Netherlands,
a young engineer with an Amiga found himself frustrated.
The clones he tried were clumsy, incomplete.
So he built his own.
Late 80s.
In the Netherlands, Bram Moolenaar buys an Amiga computer.
He looks for VI.
The clones available are incomplete, buggy.
So Bram writes his own.
He calls it VIM.
First VI imitation, later I improved.
Released in 1991, VIM adds features VI never dreamed of.
Unlimited undo, syntax highlighting, a scripting language, plugins.
By the mid-90s, it's on Linux, Windows, and countless other systems.
Developers joke about being trapped inside it, unable to quit.
Behind the jokes lies truth.
VIM is everywhere.
Bram ties it to something larger.
He licenses it as CharityWare, asking users to donate not to him,
but to a children's charity in Uganda.
For many, typing, helpUganda is their first glimpse of that connection.
VIM isn't just an editor.
It's Bram's personal gift to the community.
For a time, VIM seemed unstoppable, present on Linux, Windows, even legacy systems.
But ubiquity carried a price.
As the decades rolled on, its foundations began to creak.
By the 2000s, cracks begin to show.
The codebase ages.
Some files stretch thousands of lines.
Support lingers for platforms that are barely alive like AmigaOS and OS2.
Contributors propose features like asynchronous processing.
Patches sit on the mailing list, unmerged.
Bram, cautious as ever, worries about risk.
A single misstep could destabilize an editor used by millions.
And so VIM changes slowly, carefully, almost reluctantly.
By the early 2010s, newer editors like Sublime Text are sleek, responsive, modern.
VIM is still revered, but also criticized efficient, yes, but resistant to change.
And the reality in that auditorium weighs heavily.
VIM's future depends on one man, and one man alone.
Meanwhile, on the mailing lists, patches piled up.
Some contributors waited months for replies.
For one developer in Brazil, the silence became unbearable.
By 2013, the frustration was boiling.
Thiago de Arruda, a developer from Brazil, had spent weeks working on a patch for VIM
adding job control, the ability to run processes in the background.
It was exactly what many in the community had been asking for.
The patch was large.
Messy in places.
But it worked.
And then, nothing.
No merge.
No response.
Just silence.
Thiago vented on the mailing list,
I don't have time to spend working on something that may lead to nowhere.
Many patches will sit forever without being merged.
VIM's source code is too complicated and functions with 2000 lines.
It's too difficult to work with.
This wasn't anger.
It was resignation.
And out of that resignation came an idea,
if VIM couldn't change from within, maybe it needed to be reborn.
February 2014.
Thiago drafts an email.
It's simple, almost casual.
Some time ago I decided to fork VIM to refactor code and implement new features.
Until yesterday, the plans for this fork existed only in my head.
Now everything is documented on GitHub.
Anyone who likes the ideas is welcome to join.
He calls it NeoVim.
The reactions are immediate.
Skeptics point out how massive VIM's codebase is.
Forks, they argue, always fizzle out.
What's the real gain for the user?
Bram himself replies, skeptical but not unkind.
Others feel a spark.
For years, they'd wanted this exact chance to modernize VIM without waiting for permission.
Within weeks, GitHub issues are filling with volunteers.
Developers propose ripping out legacy code,
rewriting in modern C, adding an API layer.
A momentum starts to build.
VIM had always been like a cathedral.
One architect, one builder, one final say.
NeoVim opened the gates.
In its first months, contributors removed thousands of lines of dead code.
They modernized the source to C99, added automated testing,
and set up continuous integration.
But the real breakthroughs came in vision.
Libov brought Asynchronous I.O. and a modern event loop,
the same technology powering Node.js.
UI decoupling turned NeoVim into a headless editor.
The core could now be controlled by any interface, graphical or terminal.
Remote plugins allowed extensions in any language, talking to NeoVim over RPC.
This wasn't just a fork.
It was a rewrite of VIM's foundation.
Forks are easy to announce.
Most fade quietly within months.
NeoVim's survival would depend on something harder,
trust.
In March 2014, the team made a bold move.
They launched a crowdfunding campaign on Bountysource,
asking the community to back their vision.
Skeptics predicted a trickle of donations at best.
VIM users were loyal, but frugal.
After all, VIM itself had been charitieware for decades.
But within weeks, pledges poured in.
By the end, nearly $34,000 had been raised.
Enough to fund focused development.
Enough to prove that NeoVim had believers.
Momentum grew.
By June 2014, NeoVim had over 77 contributors, and more than 1,000 commits.
GitHub issues filled with debates over architecture, refactoring, and new features.
One developer later recalled,
It was like oxygen.
Finally, we could actually change things.
Among those who stepped up was Justin M. Keyes.
Calm, meticulous, he became one of the project's guiding forces.
Where Thiago had provided the spark,
Justin provided endurance reviewing code,
managing releases, keeping the project on track.
The work moved fast.
Legacy platform support was stripped away.
Automated testing caught regressions.
A new build system, CMake, replaced fragile makefiles.
And then came the breakthroughs promised at the fork.
Asynchronous job control made plugins responsive.
Embedded terminal emulator allowed shells and REPL inside splits.
Remote plugins flourished across languages.
Each milestone was a signal.
NeoVim wasn't just alive.
It was evolving.
Yet NeoVim's momentum didn't go unnoticed.
After a decade of near silence,
Vim was about to remind the world it was still alive.
But NeoVim's rise didn't happen in a vacuum.
Bram was watching.
And in September 2016, Vim 8.0 was released,
the first major Vim release in 10 years.
The last major version that got out was Vim 8.
And Vim 8 actually had quite a bit of functionality around asynchronous behavior.
It shipped with job control, channels, and timers.
Features long considered impossible.
To some, it was proof that NeoVim had forced Vim to move.
To others, it was a reminder that the old king still reigned.
By 2017, NeoVim had survived its infancy.
But competition was closing in.
In 2015, Visual Studio Code appeared.
Backed by Microsoft, free, and powered by Electron,
it grew rapidly.
By 2017 to 2018, it was everywhere.
Its language server protocol support, graphical polish,
and one-click extensions made it the editor of choice for millions.
Sublime Text still had speed.
JetBrain's IDEs dominated professional environments.
And soon, newer projects like Helix and other Modal Editor,
written in Rust, joined the race.
NeoVim was no longer competing just with Vim.
It was competing with the modern wave.
Inside the community, debates brewed.
Was NeoVim modernizing Vim, or abandoning it?
Some users worried about breakage and compatibility.
Others complained that governance felt unclear,
with Thiago stepping back and leadership diffuse.
Still, progress was undeniable.
With Justin and others steering, NeoVim stabilized.
The next transformation came not from a fork, but from a language.
VimScript had always been clumsy and slow.
NeoVim's developers embedded Lua.
Lightweight and fast, Lua turned NeoVim into a programmable platform.
Plugins once awkward in VimScript became seamless.
Configurations that crawled ran instantly.
The release of NeoVim 0.5 was a watershed moment.
Built-in LSP client delivered IDE-level intelligence.
TreeSitter integration brought precise syntax parsing.
Lua APIs matured, fueling a wave of plugin innovation.
Frameworks like Telescope and LuaLene redefined the editing experience.
NeoVim was no longer just Vim improved, it was something new.
Meanwhile, Vim advanced cautiously.
Bram introduced Vim9Script, his own modernization effort.
Less widely adopted, but true to his philosophy.
Two editors, two philosophies, one lineage.
In August 2023, news broke.
Bram Moolenaar had died at 62.
The community was stunned.
The man who had joked keep me alive was gone.
Tributes poured in.
Developers remembered not just Vim, but his humility, his Cherokee work, his quiet presence.
Vim's future, once tied to him alone,
now rested in the hands of a new generation of maintainers.
Today, Vim and NeoVim exist side by side.
Vim remains steady, reliable, cautious.
NeoVim thrives as experimental, community-driven, fast-moving.
Competitors like VS Code dominate the mainstream.
Helix attracts the curious.
JetBrains rules the professional IDE space.
Yet Vim and NeoVim endure the blinking cursor proof
that a model invented in 1976 still matters.
Bram's half-joke, keep me alive, has become reality in an unexpected way.
He is gone, but Vim lives on.
NeoVim too.
Two editors, two philosophies, one shared DNA.
Half a century after Bill Joy typed VI, the cursor still blinks, waiting.
