Introduction

This is my new nvim configuration for 2024, this is based off of kickstart.nvim which is a fantastic starting point for a neovim configuration, and I highly recommend it.

I have attempted to keep this configuration relatively standard, as in, most of the core commands from nvim (or vim for that matter) should be unaffected. My changes should be additions over that rather than changes to what is already in place.

Warnings

While you're more than welcome to give this configuration a go, this is purely designed for my own use, so it's not as polished as it should be for public use, and may not as logical as it could be!

Requirements

  • Neovim (obviously) - I'm using nightly, however, stable (0.9+) should also work just fine as far as I'm aware as it hasn't been long since I've used stable.
  • ripgrep - this is required for telescope to work nicely.
  • Node.js - this is required for GitHub Copilot.

Installation

The installation is relatively straight forward, the steps are as follows:

  1. Backup your existing nvim configuration.
  2. Clone the repository to ~/.config/nvim (or wherever your nvim configuration is set to).
  3. Start up nvim.
  4. Let Lazy install everything for you automatically.
  5. Restart nvim to ensure everything is clean and ready to use.

Configuration setup

The configuration has been split into three sections:

  • init.lua - This is the starting point for the project which does the following:
    • Sets the leader (both global and local)
    • Starts loading in configuration
  • lua/core - This is where all setting are stored which are not related to external plugins and have no dependencies, and also includes the bootstrapper for lazy.nvim. Configuration settings are broken down into logical groupings.
  • lua/plugins - This is where all plugins are configured. These are mostly set up with a single file per plugin, but this is not always the case when it comes to dependencies and the like. In general, all configuration is in the respective plugin's file, including any keymaps which are specific to that plugin.

Included plugins

  • cmp-nvim-lsp
  • cmp_luasnip
  • Comment.nvim
  • copilot-cmp
  • copilot.lua
  • dressing.nvim
  • fidget.nvim
  • flash.nvim
  • friendly-snippets
  • gitsigns.nvim
  • indent-blankline.nvim
  • lazy.nvim
  • lualine.nvim
  • LuaSnip
  • mason-lspconfig.nvim
  • mason-nvim-dap.nvim
  • mason.nvim
  • neodev.nvim
  • night-owl.vim
  • nvim-cmp
  • nvim-dap
  • nvim-dap-go
  • nvim-dap-ui
  • nvim-lint
  • nvim-lspconfig
  • nvim-neoclip.lua
  • nvim-nio
  • nvim-notify
  • nvim-tree.lua
  • nvim-treesitter
  • nvim-treesitter-context
  • nvim-treesitter-textobjects
  • nvim-web-devicons
  • oil.nvim
  • outline.nvim
  • overseer.nvim
  • plenary.nvim
  • rainbow-delimiters.nvim
  • telescope-fzf-native.nvim
  • telescope.nvim
  • toggleterm.nvim
  • vim-fugitive
  • vim-illuminate
  • vim-rhubarb
  • vim-sleuth
  • which-key.nvim

Currently disabled

  • noice.nvim - This is disabled as it seems to be causing a few issues for me and I haven't had the time to look into it.