I have been using vim from time to time with minor tasks such as on-the-spot updates in server config files since forever, but only started to take it seriously since the start of this month. I have been using this config in my actual work projects for about a week now and really love it (VS Code went out of the panel/taskbar Yesterday as I feel like I am getting near the productivity I had with it the more I learn and get used to vim).
Before reading the details and the code, please know that there are going to be obvious and annoying mistakes on my part, as I am an absolute novice at both, vim and the lua programming language. So I welcome all the polite and heated criticism that comes with those and will try to constantly improve the config accordingly.
I started customizing neovim by following along this video by ThePrimeagen, but I learned soon enough that the plugin manager used in the video is outdated (Packer) so I instead followed along all the sections of the video regarding plugin management using lazy.nvim and their documentation proved extremely helpful.
After following along the video and doing most things as said, I added a colorscheme of my preference called everfoest, specifically, its lua port. I don't know if I had any real reason to add the lua port specifically but I read a few comments saying that it is better with covering all colors, and another saying it impacts startup time for some reason. I still don't know if that makes sense but I went with it anyways, mainly because I have no idea what I am doing and am simply following along with most stuff at this point, and secondly because the lua port exists and has a considerable amount of stars on GitHub. This lua port being better for themes is one of the things I would appreciate someone to confirm or debunk for me.
I then slightly altered LSP zero's autocomplete mappings, how to do which is shown in their docs.
And lastly, I added VSCode-like code snippets by following the same LSP Zero docs so that I can type in, say, html5 inside an HTML file, and have it generate HTML boilerplate code as soon as I press enter.
- lazy.nvim for plugin management.
- lsp-zero.nvim for code completion, type hinting, linting, and more.
- Code snippets with friendly-snippets, LuaSnip, and cmp_luasnip.
- telescope.nvim for fuzzy-finding of files.
- harpoon2 attached with telescope for swift workspace file navigation with the aid of keyboard shortcuts and specialized view for repetitive files.
- undotree to visualize and alter file history.
- vim-fugitive, "A Git wrapper so awesome, it should be illegal".
- vim-airline for an elegant statusline.
- cord.nvim for Discord presence.
- copilot.vim for code completion, type hinting, and more. NOTE: If you are on the free plan, I suggest disabling code telemetry from your dashboard.
- everforest for primary colorscheme.
- gruvbox-material for secondary colorscheme.
- catppuccin for tertiary colorscheme.
- Transparent background window so that you can stare at all of your harem anime waifus right as you work. Disclaimer: I do not partake in said harem-gazing while at work, nor do I recommend it. I have noticed that it causes the gazer considerable damage in productivity, and increases the already hefty number of weird looks they get from co-workers and friends alike. I prefer the picture of this mountain as my wallpaper instead.
- Custom sets and mappings.
- Custom colorscheme.
- and more things you can check out inside the code.
I'll mention once again that I am a total beginner at vim and lua and that there are tons, and tons, and tons of configs better than mine in terms of features, code/file structure, performance, and every other aspect. So you really don't have much of a reason to try this (Unless you want to help better it with a PR or something 🥹). It's just something for my personal use that I wanted to share with others, hopefully improve it, and then have more try it when it's in a polished state.
That being said, It's fairly simple to use the config. Assuming you have neovim and lazy.nvim installed, the code for this repository should go right inside of your ~/.config/nvim
, or other config location. Then, you would simply want to ensure if all the plugins are installed via the lazy window, that you can go inside of by typing :Lazy
. Once inside, press I
to install, or U
to update, or S
to sync as needed and then restart vim to experience the config.
Special thanks to ThePrimeagen for their video, this config is basically 70% just that video poorly ported to lazy.nvim. Subscribe to their main channel and to TheVimeagen.