My Neovim configuration
  • Lua 87.6%
  • TeX 11.9%
  • Shell 0.5%
Find a file
2023-11-21 17:58:24 +01:00
lua/weeheavy always show tab line and separate sign column 2023-11-21 17:58:24 +01:00
init.lua documentation 2023-11-21 13:29:49 +01:00
lazy-lock.json beauty salon 2023-11-21 17:57:14 +01:00
README.md cosmetics 2023-11-21 13:54:47 +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, LSP 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. Details in lua/weeheavy/plugins/telescope-fzf-native.lua

Speed

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

Startuptime: 33.68ms

Based on the actual CPU time of the Neovim process till UIEnter.
This is more accurate than `nvim --startuptime`.
  LazyStart 10.87ms
  LazyDone  31.22ms (+20.35ms)
  UIEnter   33.68ms (+2.45ms)

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
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
vim-sleuth Heuristically set tab/shift mode https://github.com/tpope/vim-sleuth
nightfox.nvim Theme with treesitter/lsp support https://github.com/EdenEast/nightfox.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
which-key.nvim Shows contextual key bindings https://github.com/folke/which-key.nvim

Command cheat sheet

Vim/Neovim

Basics

  • Space is the leader key and shows key combinations thanks to which-key.nvim

Plugin fiddling/changes

  • :so Source file
  • :checkhealth <pluginname> check for problems with plugin. Use :checkhealth to check base and all plugins

Navigation

  • Ctrl+t to open a file in e.g. a Telescope finder in a new buffer
  • gt or gT to navigate open buffers
  • Ctrl+wq close window
  • Ctrl+ws split window horizontally
  • Ctrl+wv split window vertically
  • Ctrl+<h/j/k/l> switch between split windows

Lazy

  • :Lazy to show the package manager UI

Telescope

  • Ctrl+n scroll down (next) file list
  • Ctrl+p scroll up (previous) file list
  • Ctrl+d scroll down in preview
  • Ctrl+u scroll up in preview

Treesitter

  • :TSUpdate update all parsers
  • :TSModuleInfo show installed parsers

Open issues/TODOs