4.9 KiB
4.9 KiB
title | date | id | tags | ||||
---|---|---|---|---|---|---|---|
My neovim setup | 2024-05-16T12:16:06+0200 | 20240516121606 |
|
Neovim setup
This new configuration is written with the help of:
kickstart.nvim
. This is a good project to kickstart a configuration, but then it takes time to understand what it makes, how to use it, and how to modify it.- Tutoriel : configurer Neovim comme IDE/éditeur de code à partir de zéro. This blog post, in French, helped me a lot to understand better my configuration and to rewrite it.
Requirements
- Neovim > 0.10.
- Ripgrep.
- A nerd font.
vscode-langservers-extracted
. It's mandatory for the JSON LSP.
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 fornvim-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 (withtreesitter-textobjects
as dependency, to improve bloc selection and navigation. It is deactivated for markdown.- Markdown:
vim-pandoc
andvim-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
withmason-lspconfig.nvim
to install automatically the needed LSP. And also withmason-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 improvelua_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.