/nvim-starter-kit

Neovim Starter Kit

Primary LanguageLuaMIT LicenseMIT

Neovim Starter Kit ๐Ÿ•นโšก๐Ÿค–

This is my personalized Neovim Starter Kit. IMO it is a very well structured, clean configuration for getting started with Neovim. It uses the lazy.nvim package manager, which allows plugins to be added simply by dropping a plugin spec file into your plugins folder. Each plugin file in my configuration is well commented and you can remove any plugin file that you don't need or want. A lot of Neovim users recommend kickstart.nvim, which I agree is a great resource due to its simplicity, but I believe this Starter Kit directory structure is much easier to maintain in the long run.

DISCLAIMER: These configurations are based on my personal dev setup and may not be right for everyone. I take no responsibility for the endless hours of Neovim configuration you are about to embark on and the unhealthy bond that you will form with your editor. Proceed at your own risk!


YouTube Guide

YouTube Guide for this Starter Kit


Prerequisites

Optional

  • TMUX
    • TMUX is a way to organize multiple terminal sessions, windows and panels and works very nicely in conjunction with Neovim.
    • I've included my TMUX configuration file in this repo as well .tmux.conf
  • SHELL SETTINGS
    • This will set your terminal to use vim motions. You can put it in your ~/.bashrc or similar file: set -o vi

NOTE: I do all of my development on a Debian/Ubuntu based Linux distro, so while most of this README will still work on other operating systems, it is geared towards my own dev environment. If you are using a Mac, your mileage may vary (you Kool-Aid-drinking, hipster Apple fanboi). If you are using Windows, I'll see you in Hell!


Setting up Neovim using this Starter Kit

After installing all of the prerequisites, you can start Neovim by running nvim to make sure it works. This will be the ugly vanilla configuration before adding any themes/plugins. If you are new to vim/nvim and got yourself trapped, you can quit with :q

Instructions

  • If you are NOT starting from scratch and want to replace your current Neovim configuration, make a backup first:

    # Backup your existing Neovim configuration
    mv ~/.config/nvim{,.bak}
    
    # Backup your existing Neovim cache/state (optional but recommended)
    mv ~/.local/share/nvim{,.bak}
    mv ~/.local/state/nvim{,.bak}
    mv ~/.cache/nvim{,.bak}
  • Clone the Starter Kit (if you didn't make a backup, this will replace your existing Neovim config)

    # Make git subdirectory in your home directory
    mkdir ~/git
    cd ~/git
    # Clone Starter Kit into your git directory
    git clone https://github.com/bcampolo/nvim-starter-kit
    # Make the Neovim configuration directory
    mkdir -p ~/.config/nvim
    # Copy the Starter Kit Neovim configuration to your Neovim configuration
    cp -r ~/git/nvim-starter-kit/.config/nvim/* ~/.config/nvim/
  • Start Neovim ๐Ÿš€

    nvim
  • Once Neovim is started, you may see a number of messages from Lazy, Mason and Treesitter installing plugins, LSP servers, and syntax highlighting. You may see some initial errors. There may be plugins that are still installing. Press enter if instructed to. Wait a bit for everything to finish installing. Press q to close the Lazy UI. Once everything is done installing, quit and restart Neovim one more time.

  • Now everything should be setup, but it is possible that some plugins are not working correctly. Run :checkhealth from within Neovim and investigate any errors that you encounter.

Starter Kit Structure

โ”œโ”€โ”€ .config
โ”‚   โ””โ”€โ”€ nvim
โ”‚       โ”œโ”€โ”€ ftplugin                                
โ”‚       โ”‚   โ”œโ”€โ”€ markdown.lua                    # Add files here in the form filetype.lua
โ”‚       โ”‚   โ””โ”€โ”€ ...                             # to change options based on file type (not extension)
โ”‚       โ”œโ”€โ”€ lua
โ”‚       โ”‚   โ”œโ”€โ”€ core
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ keymaps.lua                 # This configures all of your key bindings
โ”‚       โ”‚   โ”‚   โ””โ”€โ”€ options.lua                 # This configures all of your global Neovim options
โ”‚       โ”‚   โ””โ”€โ”€ plugins
โ”‚       โ”‚       โ”œโ”€โ”€ autopairs.lua               # Plugins can be added / removed from Neovim by
โ”‚       โ”‚       โ”œโ”€โ”€ ...                         # adding / removing plugin files to this directory
โ”‚       โ”‚       โ””โ”€โ”€ vim-tmux-navigator.lua
โ”‚       โ”œโ”€โ”€ init.lua                            # This is the main Neovim configuration file
โ”‚       โ””โ”€โ”€ lazy-lock.json                      # This locks your plugins to specific versions/commits
โ”œโ”€โ”€ .mime.types                                 # Fixes a Linux/Firefox issue to view local markdown (optional)
โ””โ”€โ”€ .tmux.conf                                  # This is my tmux configuration (optional)

Additional Resources

Suggestions / Pull Requests

If you run into any issues or have any suggestions for plugins that you feel should be part of the Starter Kit, open a PR that includes the updates and I'll review/merge it as soon as I can.

Starter Kit Variants