/nvim

Primary LanguageLuaGNU General Public License v3.0GPL-3.0

My Neovim Configuration

image image

Install Neovim 0.9

You can install Neovim with your package manager e.g. brew, apt, pacman etc.. but remember that when you update your packages Neovim may be upgraded to a newer version.

I have included scripts to install neovim from release or building from source

Or run the following (make sure to read the script before running it.)

bash <(curl -s https://raw.githubusercontent.com/milindmadhukar/nvim/master/install_neovim)

Install the Config

Make sure to remove or move your current nvim directory

git clone https://github.com/milindmadhukar/nvim.git ~/.config/nvim

Run nvim and wait for the plugins to be installed

NOTE (You will notice treesitter pulling in a bunch of parsers the next time you open Neovim)

NOTE Checkout this file for some predefined keymaps: keymaps

Get healthy

Open nvim and enter the following:

:checkhealth

You'll probably notice you don't have support for copy/paste also that python and node haven't been setup

So let's fix that

First we'll fix copy/paste

  • On mac pbcopy should be builtin

  • On Ubuntu

    sudo apt install xsel # for X11
    sudo apt install wl-clipboard # for wayland

Next we need to install python support (node is optional)

  • Neovim python support

    pip install pynvim
  • Neovim node support

    npm i -g neovim

We will also need ripgrep for Telescope to work:

  • Ripgrep

    sudo apt install ripgrep

NOTE make sure you have node installed, I recommend a node manager like fnm.

Fonts

Install the icon Fonts

mkdir -p ~/.fonts && cp fonts/* ~/.fonts && fc-cache -fv

I recommend using the following repo to get a "Nerd Font" (Font that supports icons)

getnf

Configuration

LSP

To add a new LSP

First Enter:

Mason

and press i on the Language Server you wish to install

or

Add the server name to the servers in the mason config file: mason

Formatters and linters

Make sure the formatter or linter is installed and add it to this setup function: null-ls