My Neovim configuration
  • Lua 87.6%
  • TeX 11.9%
  • Shell 0.5%
Find a file
2024-01-19 14:53:30 +01:00
lua/weeheavy pin some plugins to stable versions and document Lazy restore command 2024-01-19 14:32:36 +01:00
CHEATSHEET.md pin some plugins to stable versions and document Lazy restore command 2024-01-19 14:32:36 +01:00
init.lua documentation 2023-11-21 13:29:49 +01:00
lazy-lock.json pin some plugins to stable versions and document Lazy restore command 2024-01-19 14:32:36 +01:00
README.md update startup times, complete plugin list 2024-01-19 14:53:30 +01:00
sample.png updated screenshot 2023-11-28 13:15:03 +01:00

My Neovim configuration

Motivation

After doing my first steps with https://github.com/nvim-lua/kickstart.nvim, I decided to roll my own, custom, "lightweight" Neovim configuration in order to better understand Neovim and its configuration/customization, package managers, plugins etc. and have "my own" config that only includes things I really need.

Installation

  1. Install Neovim 0.9.x
  2. Install OS dependencies documented in init.lua
  3. Clone this Git repository to ~/.config/nvim

Finishing touches

  • Install Treesitter comment parser (to highlight FIXME:/NOTE:/TODO:/XXX:) with :TSInstall comment
  • Create a $HOME/.ignore file and add big, useless directories to it, so Telescope/ripgrep/fd can ignore those. My current list of files/directories is available in lua/weeheavy/plugins/telescope-fzf-native.lua

Speed

Output from lazy.nvim profiling (:Lazy, then P):

Start and open init.lua

Startuptime: 79.91ms

Based on the actual CPU time of the Neovim process till UIEnter.
This is more accurate than `nvim --startuptime`.
  LazyStart 11.53ms
  LazyDone  46.36ms (+34.83ms)
  UIEnter   79.91ms (+33.55ms)

Starting with empty file

Around 50% of the plugins are lazy-loaded.

Startuptime: 47.58ms

Based on the actual CPU time of the Neovim process till UIEnter.
This is more accurate than `nvim --startuptime`.
  LazyStart 11.16ms
  LazyDone  41.83ms (+30.67ms)
  UIEnter   47.58ms (+5.75ms)

Plugins

Name Purpose URL
lazy.nvim Package manager https://github.com/folke/lazy.nvim
telescope.nvim Find, Filter, Preview, Pick https://github.com/nvim-telescope/telescope.nvim
telescope-fzf-native.nvim Fuzzy finder for Telescope https://github.com/nvim-telescope/telescope-fzf-native.nvim
telescope-file-browser.nvim File browser https://github.com/nvim-telescope/telescope-file-browser.nvim
nvim-treesitter Parser/syntax highlighting https://github.com/nvim-treesitter/nvim-treesitter
nvim-treesitter-context Shows current line context https://github.com/nvim-treesitter/nvim-treesitter-context
nvim-treesitter-textobjects ? https://github.com/nvim-treesitter/nvim-treesitter-textobjects
nightfox.nvim Theme with treesitter/lsp support https://github.com/EdenEast/nightfox.nvim
tokyonight.nvim Theme with treesitter/lsp support https://github.com/folke/tokyonight.nvim
lualine.nvim Status line https://github.com/nvim-lualine/lualine.nvim
nvim-web-devicons filetype glyphs (icons) for plugins https://github.com/nvim-tree/nvim-web-devicons
gitsigns.nvim Git change indicator https://github.com/lewis6991/gitsigns.nvim
which-key.nvim Shows contextual key bindings https://github.com/folke/which-key.nvim
indent-blankline.nvim Visual indentation guide https://github.com/lukas-reineke/indent-blankline.nvim
vim-illuminate Highlight similar words (w/ LSP, Treesitter, regex) https://github.com/RRethy/vim-illuminate
lsp-zero.nvim LSP for mere mortals https://github.com/VonHeikemen/lsp-zero.nvim
nvim-lspconfig Component of lsp-zero.nvim https://github.com/neovim/nvim-lspconfig
cmp-nvim-lsp Dependency of lsp-zero.nvim https://github.com/hrsh7th/cmp-nvim-lsp
conform.nvim Black magic wizardry, replacement for null-ls https://github.com/stevearc/conform.nvim
mason.nvim Install/manage LSP/DAP servers, linters and formatters https://github.com/williamboman/mason.nvim
mason-lspconfig.nvim Bridges mason.nvim with the lspconfig plugin https://github.com/williamboman/mason-lspconfig.nvim
zen-mode.nvim Distraction-free coding for Neovim https://github.com/folke/zen-mode.nvim
twilight.nvim Dims inactive portions of the code you're editing https://github.com/folke/twilight.nvim

Looks

This is how it looks like:

My Neovim setup

Open issues/TODOs