/neovim-boilerplate

Modern Neovim Boilerplate ✨

Primary LanguageLuaMIT LicenseMIT

image

Boilerplate for Neovim. A simple, well-documented template to start building your own configuration. I've created a lot of configurations before neovim introduced Lua. From time to time I saw repeating patterns: creating directories, importing the same files, and much more. I decided to create a boilerplate so that when creating a new configuration, I didn’t have to write everything from the very beginning.

Also, this boilerplate will be useful for beginners who do not know where to start writing their configuration. All files are well documented, at the top of each file you can find a frontmatter with the necessary data.

Use it

You can use this template with the following command:

[ -d $HOME/.config/nvim ] && mv $HOME/.config/{nvim,nvim.old}; \
    git clone https://github.com/tokiory/neovim-boilerplate $HOME/.config/nvim

Warning

Before using this configuration you will need NodeJS and Go (for Nodejs and Go LSP). You can install it with your favorite package manager, but, I recommend using asdf. You can get it from this repo. After installation you will need to enter the following commands:

asdf plugin add nodejs
asdf plugin add golang
asdf install golang <any version from 1.20>
asdf install nodejs <any version from 16>

Structure

.
├── init.lua                  -- Entry point
├── init.sh                   -- Script for installation side-software (aka packer)
│
├── lua
│  ├── extensions             -- Plugin configurations
│  │
│  ├── helpers
│  │  ├── globals.lua         -- Global variables (aliases)
│  │  └── keyboard.lua        -- Keyboard helper functions
│  │
│  ├── keybindings.lua        -- Keyboard mappings
│  ├── plugins.lua            -- Plugin initialization via Packer
│  └── settings.lua           -- Settings for neovim
└── README.md

Packed Plugins

Opionated standards

  • Use lazy.nvim as a plugin manager, it is fast, simple and has a nice user interface;
  • Use Mason with mason-lspconfig to manage LSP servers;
  • Use which-key to handle all keyboard shortcuts because it's easy and fun to use;
  • Use mini.files as your main explorer because it is fast and minimalistic;
  • You can use the standard (de facto) NeoTree as the main explorer, just uncomment it and comment out mini.files;
  • Use cmp.nvim with lspkind as a completion manager as it provides great source support for completion;
  • Use gitsigns to work with git stashes because it gives good highlights;
  • Use Trouble nvim as an alternative to quicklist because it has a nice interface;
  • Use Treesitter (actually standard) to search for files, content and other pickers;
  • Use your favorite theme, you can comment Vitesse, there are several configs for different themes;
  • Use mini.nvim for editor utilities because mini.nvim provides a great experience and is as minimalistic as possible;

💡 Tips

  • Rewrite it from scratch (it’s a template, cmon), you can replace each plugin with your favorite one;
  • RTFM, each plugin has a comment with a link to the repository;
  • Don't be afraid to break something. Remember: you can fork this repo as much as you like, just don't be afraid to break it;

Star History Chart