Setting Up Neovim with NvChad

August 2, 2024

Installing Neovim

I like to go with the easiest, which is getting the .appimage from neovim’s https://github.com/neovim/neovim/releases/. Grab the latest and move it to /usr/local/bin/neovim.

Installing NvChad

Run:

Terminal window
git clone https://github.com/NvChad/starter ~/.config/nvim && nvim

Adding plugins to NvChad

NvChad uses Lazy to manage plugins.

Add the file .config/nvim/lua/plugins/neogit.lua.

Inside the file, add:

local plugins = {
{
lazy = false,
"NeogitOrg/neogit",
dependencies = {
"nvim-lua/plenary.nvim", -- required
"sindrets/diffview.nvim", -- optional - Diff integration
-- Only one of these is needed, not both.
"nvim-telescope/telescope.nvim", -- optional
-- "ibhagwan/fzf-lua", -- optional
},
config = true
}
}
return plugins

Changing keymaps

Edit the .config/nvim/lua/mappings.lua:

As an example, I added Neogit to run with SPC g g.

map("n", "<leader>gg", "<cmd> Neogit <cr>")

Default maps that you should know

  • SPC f f: Fuzzy find all files in the current directory

Treesitter

The goal of nvim-treesitter is to offer a straightforward and user-friendly interface for integrating tree-sitter into Neovim, along with basic functionalities such as syntax highlighting.

How to enable

Edit .conf/nvim/lua/plugins/init.vim and enable:

-- [...]
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"vim", "lua", "vimdoc", "html", "css", "python"
},
},
},
--[...]

Mason

Mason is a Neovim plugin that provides an integrated way to manage external dependencies like LSP servers, linters, and formatters directly from Neovim.

Adding python-lsp-server

As an example we are going to install https://github.com/python-lsp/python-lsp-server.

Edit the file .config/nvim/lua/configs/lspconfig.lua. We need to add pylsp to local servers:

local servers = { "html", "cssls", "pylsp" }

Lets also add an example configuration. Append the

lspconfig.pylsp.setup {
settings = {
pylsp = {
plugins = {
pycodestyle = {
maxLineLength = 125,
}
}
}
}
}

We are setting the maximum line length to 125.

That’s it. You just got started with nvim and NvChad.