Why I use Neovim's AstroNvim project as my daily driver IDE
Table of contents
- What is AstroNvim?
- What does AstroNvim configure out of the box?
- Why would I do this to myself?
- What are my favorite customizations?
What is AstroNvim?
AstroNvim is an open-source project that tastefully composes many open-source Lua plugins for Neovim together to create a complete Integrated Development Environment (IDE) experience in your terminal.
Think of it like vim extended with filetree, LSP support, git integrations, language symbol lookups and more.
Here's what AstroNvim looks like when I'm running it in a tmux session:
In other words, think of VSCode or one of JetBrains' IDE offerings, but completely free, with no sign-up required and you're also on your own when things go bad.
That last part is not entirely true, of course, because you've got the whole helpful community in GitHub and elsewhere who share configurations, bug reports, patches and workarounds with one another online.
What does AstroNvim configure out of the box?
- Common plugin specifications with AstroCommunity
- Statusline, Winbar, and Tabline with Heirline
- Plugin management with lazy.nvim
- Package management with mason.nvim
- File explorer with Neo-tree
- Autocompletion with Cmp
- Git integration with Gitsigns
- Terminal with Toggleterm
- Fuzzy finding with Telescope
- Syntax highlighting with Treesitter
- Formatting and linting with none-ls
- Language Server Protocol with Native LSP
Why would I do this to myself?
Around now you may be starting to say to yourself, "Self, I think this guy is losing it, and/or something of sadist". And you'd be right. But there's actually more than one reason I willfully continue to do this to myself:
AstroNvim is free
I pay for enough software subscriptions as it is. I still have VSCode, Cursor, and even some Jetbrains IDEs installed and lying around, I generally do not find myself reaching for them unless they're the only places I can run a particular extension I need.
AstroNvim is fast
I am one of those people who spends the few seconds it takes VSCode to fire all your plugins' phone-home-and-notify subsystems screaming in his head.
Being greeted by the stuttering multi-layered wall of opaque notifications that do not idenitfy which extension they're talking about every time I have the audacity to open a file for editing is just the wrong kind of abuse in my book.
I like that, despite AstroNvim including plenty of the functionality I need to get my job done effectively, it remains snappy on boot and when loading large files.
AstroNvim plays well with Tmux
It's even snappy when I have multiple instances of Neovim open in different tmux panes. I've arrived at my tmux-based workflow after many years of careful considerations, cycling through new tools and approaches and giving all of the major IDEs, paid and free, their own period of careful contemplation and editing time both at work and on personal projects.
Tmux, and the ability it grants me to effortlessly resize my workflow to the scope of my current task, are for me.
AstroNvim is highly extensible and Neovim's community is prolific
It takes some time to become comfortable with Lua syntax if you've never seen it before. It takes some head-scratching, quitting, killing Neovim, re-opening it and trying hotkeys again before your first few plugins install smoothly.
Catpuccin
But after a little bit it's pretty comfortable and fun to find new Neovim plugins and install, combine and configure them to your liking.
Everything from AI-enhanced tool integrations to spellcheckers, link utilities that open the source code under your cursor in GitHub for you and copy the URL to your clipboard and much more are available as open-source Neovim plugins on GitHub.
For example, right after OpenAI initially set the world on fire with ChatGPT, this handy Neovim plugin emerged on GitHub: NeoAI. As you can see, it integrates directly in Neovim, so you can copy paste the example config from the project README and modify it to your heart's content.
There's a ton of tools now that allow you to interact with OpenAI and a wide range of local models, but my point is that this is only one of many amazing free community-provided Neovim plugins that popped up essentially immediately to address fellow Neovim users' needs.
What are my favorite customizations?
Luckily, because AstroNvim itself is open-source, and the project docs recommend using the provided config template repository to store your personal customizations, you don't have to ask me to see my config.
Hell, you can even jump directly to the commit where I installed my favorite Gruvbox dark theme.