neovim/README.md

4.9 KiB

title date id tags
My neovim setup 2024-05-16T12:16:06+0200 20240516121606
neovim
editor
configuration
README

Neovim setup

This new configuration is written with the help of:

Requirements

Python provider

I'm using a virtual environment for the python provider, as the documentation, using pyenv.

Structure

  • init.lua is the configuration file, with the required includes.
  • lua/ is the folder where specific configuration and plugins are.
  • lua/core contains the basic configuration:
    • options.lua with the global neovim options.
    • keymaps.lua with the global neovim key mappings.
  • lua/config contains the Lazy plugin manager installation and configuration.
  • lua/plugins of course contains all other plugins installation and configuration.

Plugins

I won't provide links for each of these plugins as they are easily to be found.

  • lazy.nvim as plugins manager.
  • plenary to get lua functions used by many plugins.
  • Adwaita for the colorscheme.
  • which-key.nvim to find out shortkeys.
  • nvim-tree as file explorer.
  • telescope.nvim for the fuzzy finder interface. It has some specific dependencies:
    • telescope-fzf-native.nvim to get a C implementation of fzf, with improved performances.
    • telescope-luasnip.nvim to search for snippets. LuaSnip is a dependency for nvim-cmp which provides completion.
    • telescope-ag to use Ag or Ripgrep to filter results.
  • nvim-web-devicons as a dependency to add icons to the interface, when it is used (file explorer, fuzzy finder).
  • treesitter for language grammar support (with treesitter-textobjects as dependency, to improve bloc selection and navigation. It is deactivated for markdown.
  • Markdown:
    • vim-pandoc and vim-pandoc-syntax to support the pandoc markdown, nice concealing, easy folding and hard wrap automatic formatting.
    • mkdnflow.nvim to improve links navigation, table formatting, file creation, and so on. It improves also the link concealing.
    • markdown-preview.nvim to provide a live HTML preview.
  • Completion with nvim-cmp with the following dependencies:
    • cmp-buffer to get text completion from the current buffer text.
    • cmp-path to get path completion.
    • cmp-cmdline to get vim cmdline completion.
    • LuaSnip to get snippet expansion, with the nvim-cmp source for it: cmp_luasnip.
    • friendly-snippets which adds some user-friendly snippets.
    • cmp-emoji for emoji completion after ':'.
    • lspkind.nvim to add text symbols to spot the type of source completion.
  • Language servers:
    • lsp-zero.nvim to ease LSP configuration.
    • nvim-lspconfig to configure LSP support and completion, with dependencies:
      • cmp-nvim-lsp to get LSP results in completion.
      • nvim-lsp-file-operations to add some code actions.
      • fidget.nvim for LSP progress message and neovim notifications.
    • mason.nvim with mason-lspconfig.nvim to install automatically the needed LSP. And also with mason-tool-installer to extend it's package manager capabilities.
    • schemastore.nvim which provides the schemas needed by JSON and YAML validators.
  • trouble.nvim to display all trouble messages (LSP, diagnostics, etc.) in a pretty list.
  • lazdev.nvim to improve lua_ls configuration.
  • vim-fugitive.
  • gitsigns.nvim to see changes in the sign column.
  • vim-speeddating to increment dates, times, etc.
  • vim-surround to improve surroundings management.
  • autopairs.nvim.
  • Comment.nvim to comment lines and blocs.
  • ident-blankline.nvim to improve readability of indentation.
  • zen-mode.nvim for a good zen mode.
  • toggleterm.nvim to quickly get a terminal. Might find a better one.
  • rainbow-csv.nvim to manage CSV files.
  • venv-selector.nvim to ease python virtual env.
  • vim-grammalecte to get a good grammar checker for French.
  • Quarto:
    • nvim-quarto to add quarto environment configuration.
    • otter for the embedded code completion.
    • vim-slime for the embedded code execution.