119 lines
4.9 KiB
Markdown
119 lines
4.9 KiB
Markdown
---
|
|
title: My neovim setup
|
|
date: 2024-05-16T12:16:06+0200
|
|
id: 20240516121606
|
|
tags: [neovim, editor, configuration, README]
|
|
---
|
|
|
|
# [Neovim setup][1]
|
|
|
|
This new configuration is written with the help of:
|
|
|
|
- [`kickstart.nvim`][4]. 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][5]*. This blog post, in French, helped me a lot to understand better my
|
|
configuration and to rewrite it.
|
|
|
|
## Requirements
|
|
|
|
- Neovim > 0.10.
|
|
- [Ripgrep][2].
|
|
- A [nerd font][3].
|
|
- [`vscode-langservers-extracted`][6]. It's mandatory for the JSON LSP.
|
|
|
|
## Python provider
|
|
|
|
I'm using a virtual environment for the python provider, as the
|
|
[documentation][7], 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.
|
|
|
|
<!-- references -->
|
|
|
|
[1]: ./README.md
|
|
[2]: https://github.com/BurntSushi/ripgrep/
|
|
[3]: https://github.com/ryanoasis/nerd-fonts/
|
|
[4]: https://github.com/nvim-lua/kickstart.nvim
|
|
[5]: https://vincent.jousse.org/blog/fr/tech/configurer-neovim-comme-ide-a-partir-de-zero-tutoriel-guide
|
|
[6]: https://github.com/hrsh7th/vscode-langservers-extracted
|
|
[7]: https://neovim.io/doc/user/provider.html#python-virtualenv
|