neovim/README.md
2023-11-23 09:12:39 +01:00

3.9 KiB

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. A current list of files/directories is 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 set as the leader key

Plugin fiddling/changes

  • :so Source file
  • :checkhealth <pluginname> check for problems of a 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 tab
  • gt or gT to switch between open tabs
  • Ctrl+wq close window
  • Ctrl+ws split window horizontally
  • Ctrl+wv split window vertically
  • Ctrl+<h/j/k/l> switch between split windows
  • Space+Space shows open buffers (via Telescope buffers)

Lazy

  • :Lazy to show the package manager UI

Telescope

Navigation in live_grep, find_files, git_status and file_browser

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

Treesitter

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

Open issues/TODOs