Git Product home page Git Product logo

nvim-starter-kit's Introduction

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

nvim-starter-kit's People

Contributors

bcampolo avatar sayanta01 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.