Recently, I was exploring how to configure NeoVim for React/TypeScript development and came across AstroNvim. It blew my mind 🤯. It looked so beautiful!
These are known as NeoVim “frameworks“. There are more in the market: e.g. NvChad. I don’t know what changed cause I don’t remember seeing so many (any?) frameworks when I got started with NeoVim three years ago. I am still using basic init.vim
config to configure some basic plugins which doesn’t look as awesome as these frameworks.
I guess it’s time I upgraded my NeoVim configs to stay updated.
AstroNvim vs Kickstart
While AstroNvim looks super cool, it has a hands-off approach to configuration which I don’t prefer. I would like to know why and what is inside my config files. So I searched for alternatives and I found Kickstart.
Kickstart.nvim: A launch point for your personal nvim configuration
The author of Kickstart.nvim claims it’s not a framework. It’s more like a basic configuration to use as a starting point. It looked far more advanced and aesthetic than my current config even with the basic configurations.
Here is a 30-minute video explaining everything about Kickstart.nvim by the author himself. If you don’t have the time, just watch the first 3 minutes for a quick introduction.
What I like about Kickstart.nvim
Here are some reasons why I like Kickstart:
- Well-commented config files
- It has only a single file
init.lua
which is very detailed.
- It has only a single file
- Lua-based config files
- I used
init.vim
before. In comparison, using Vim API through Lua felt cleaner. - I had to learn Lua separately, but it wasn’t a big deal. All programming languages are the same with few differences here and there. Also, basic understanding is enough to get things done since I won’t be writing config from scratch.
- I used
- Automatic Plugin Manager Installation
- If you don’t have a plugin manager, it downloads
lazy.nvim
for you automatically. Previously, I had to configure plugin-manager separately from install-script. This simplified my install script a bit. - Lazy.nvim seems much more modern than vim.plug.
- If you don’t have a plugin manager, it downloads
- Helps you master key binds
- I create useful keybinds but then forget about them.
- Kickstart uses WhichKey to help you remember your Neovim keymaps, by showing available keybindings in a popup as you type.
- Telescope for Fuzzy Finding
- I used
fzf.vim
before. I found Telescope to be much more aesthetic.
- I used
- Pre-configured LSP with Mason support
- Ok, I haven’t figured this out completely yet. I have a vague sense of how LSP works. I used YouCompleteMe previously to get autocompletion for C/C++, but Java/Kotlin never worked properly.
- I am hoping to master this one this time. I will write up a new post if I manage to get this working. For now, I am keeping the basic settings Kickstart has provided.
- If you need to install any additional package for LSP, the Mason plugin takes care of it. Again, I have no clue how this works yet.
Migrating to Kickstart from my Old Config
My old config didn’t have too many customizations so it didn’t take too long. I first backed up my old config before switching to Kickstart completely and then filled in the gaps I noticed. Here are the additional things I added to Kickstart:
christoomey/vim-tmux-navigator
: I always use NeoVim inside Tmux. This plugin helps me navigate from in and out of NeoVim to different panes around me.nvim-neo-tree/neo-tree.nvim
: Kickstart didn’t come with any file navigator plugin so I added NeoTree.- Switched the theme to Catppuccin.
And that’s it.
Conclusion: I love it
My configuration is much more organized than before. There are still some parts of the configuration I don’t understand and wish to learn eventually. But overall, I love it! ❤️
Some next steps I have in mind:
- Understand the LSP configurations more and configure Java/Kotlin/Python servers.
- Check out what configuration AstroNvim is using and port the ones I like into my configuration.