This is the 2nd post in the 5 part series:
- VScode – leader of the pack
- NeoVim – modal editing experience
- VSCode with Vim – the allure of vim bindings in VSCode
- WebStorm – the premium editing experience
- Zed – the newcomer
Introduction to Modal Editing
At the opposite end of the spectrum from our previous topic is Neovim, a text editor that emphasises keyboard-focused interaction rather than mouse-driven operations. Neovim features an extraordinary approach to text navigation and manipulation through keyboard shortcuts. For example, you can press vi{ to select everything inside curly brackets. These thoughtfully designed shortcuts make text editing not just efficient but genuinely enjoyable.
What might be tedious in VS Code—like applying complex refactoring across multiple locations—becomes significantly easier with Neovim’s keybindings. Unlike traditional shortcuts that require finger-contorting combinations (Control+Alt+Command+key), Neovim uses a modal approach with a leader key (typically space) followed by intuitive key sequences.
For instance:
- Press your leader key, then
zfor folding commands - Press leader, then
gfor navigation commands
This approach creates an intuitive menu system where each key makes logical sense. Most distributions also display hints on screen as you press keys, helping you learn these shortcuts naturally.
Learning the Vim shortcuts and mode transitions takes time, though. It took me about 2 weeks to get comfortable with the basics, and my productivity was pretty low during that time.
Getting Started with Neovim
When you first launch Neovim, it’s essentially a basic text editor. Configuring it to function as a full IDE requires significant effort. That’s why I recommend starting with LazyVim, a pre-configured distribution that comes with numerous plugins already installed.
LazyVim offers:
- A solid foundation of essential plugins
- Comprehensive documentation
- Guidance for adding language-specific support (React, Svelte, Rust, etc.)
- Clear instructions for customisation
Starting from scratch with Neovim is an entirely different challenge that can take substantial time and effort. A distribution like LazyVim provides an excellent entry point.
The Speed and Flow Advantage
The primary appeal of Neovim is its speed and the flow state it enables. Everything feels accessible without interrupting your focus. Instead of stopping to grab your mouse and click small UI elements, you execute commands directly:
- Need Git? Press
leader+ggto bring up your Git interface - Want to run tasks? A simple shortcut displays them front and centre
- Need to check task status? Another keystroke shows running processes
This philosophy—focusing on one thing at a time with minimal visual clutter—creates an incredibly efficient workflow. Tasks appear when needed and disappear when you’re done, letting you concentrate on your code.
Limitations Compared to VS Code
Despite Neovim’s advantages, I’ve encountered consistent limitations:
Git Integration
While Neovim has options like LazyGit, they don’t match the comprehensive experience of VS Code with GitLens. In VS Code, you can:
- Edit files directly from the diff view
- Compare changes across multiple files simultaneously
- Easily compare branches or compare the current file with the clipboard content
- Visualise branch relationships intuitively
Plugin Stability and Maturity
Many Neovim plugins lack the stability of their VS Code counterparts:
- Some plugins can unexpectedly slow down your entire environment
- Troubleshooting these issues often requires significant time investment
- Less-popular plugins (with fewer GitHub stars) may have limited support and documentation
- Plugin updates can break functionality or conflict with other plugins
Framework and Language Support
New framework versions often receive immediate support in VS Code, while Neovim trails behind:
- AI tool integration came to VS Code first and remains more comprehensive
- Testing frameworks like Playwright and Vitest have superior VS Code integration
- Terminal integration in VS Code (clickable file paths in error messages) works more seamlessly
Where Neovim Still Shines
Neovim excels in certain scenarios. When exploring a new codebase, Neovim’s file preview capability is superior—it automatically shows file contents as you navigate the file tree, making code browsing incredibly efficient. VS Code requires clicking or pressing the spacebar to see previews.
For pure text navigation and editing speed, Neovim remains unmatched once you’ve learned the commands.
The Configuration Rabbit Hole
One caution with Neovim: the endless customization options can become a distraction. Many users report spending more time configuring their editor than actually using it to code. The plugin ecosystem is vast, and the temptation to continuously optimise your setup is real.
By comparison, setting up VS Code for a new language or framework is typically straightforward—install a few well-documented extensions, and you’re ready to work.
Conclusion
I still use Neovim occasionally, particularly for quick code browsing or specific editing tasks where its navigation speed shines. However, for day-to-day development work, the limitations I’ve discussed make it challenging to fully commit to Neovim as a primary environment.
One Comment