Ma configuration
Palier5 La lecture commentée d’une configuration réelle : github.com/quentinpigne/nvim.
La page Configuration décrit les mécaniques — vim.opt,
vim.keymap.set, les spécifications lazy.nvim. Celles-ci montrent ce que ça donne
appliqué, et surtout pourquoi chaque choix a été fait plutôt qu’un autre.
La référence est le dépôt
Ces pages expliquent des décisions, elles ne dupliquent pas le code. Le dépôt
évolue, ces pages non ; en cas de désaccord, c’est le dépôt qui a raison. Son
INDEX.md tient à jour les tableaux exhaustifs — couverture par langage, liste
complète des plugins.
Le parti pris
21 plugins, moins de mille lignes de Lua. Le strict nécessaire pour écrire du code — serveurs de langage, formatage, coloration syntaxique, autocomplétion — plus une poignée d’éléments d’interface.
Ce chiffre est le résultat d’un élagage, pas d’un point de départ minimaliste. La configuration a été plus grosse ; ce qui n’était pas utilisé chaque semaine est parti.
Trois principes en découlent :
Une source unique par sujet. Tout le support par langage — serveurs, paquets à installer, parsers, formateurs — est déclaré dans un seul fichier, et les trois consommateurs en dérivent leur configuration. Ajouter un langage, c’est ajouter une entrée dans une table, pas toucher à quatre fichiers.
Ne pas redéfinir ce que Neovim fournit. La liste des raccourcis natifs a été
vérifiée avec nvim --clean, et seuls les manques sont mappés. En 0.12, ça
représente une trentaine de lignes économisées — et surtout aucun risque d’écraser
un comportement natif par inadvertance.
Charger le plus tard possible. Presque aucun plugin ne charge au démarrage. Les quatre exceptions ont chacune une raison technique explicite, détaillée dans Structure.
Ce qui est absent, volontairement
Cette liste dit plus sur la configuration que la liste des plugins installés.
- Pas de manipulation de délimiteurs (
nvim-surround). Les objets texte couvrent l’essentiel des cas. - Pas d’auto-fermeture des paires ni des balises. Le gain net est discutable dès qu’on tape vite.
- Pas de débogueur générique. Seul Rust a le debug, via rustaceanvim, parce qu’il vient avec.
- Pas de gestion de sessions, pas de tableau de bord d’accueil.
- Pas de plugin de lint séparé. Les serveurs de langage remontent déjà les
diagnostics ; le seul manque réel est
markdownlint, jugé disproportionné pour un langage. - Pas de
which-key. Le nombre de raccourcis personnels est assez petit pour tenir en tête.
Prérequis
Neovim ≥ 0.12, plus git, node, cargo, rg, fd, fzf, et une police
Nerd Font. Tout le reste — serveurs de langage, formateurs, linters — s’installe
tout seul. Seul fzf doit venir du gestionnaire de paquets du système, mason ne
le fournit pas.
Installation
Rien n’est installé au clonage, et l’outillage arrive en deux temps distincts :
- Au premier lancement de Neovim, lazy.nvim s’installe lui-même, puis
tree-sitter-cliest installé et les parsers treesitter sont compilés. Pas besoin d’ouvrir un fichier pour ça. - À la première ouverture d’un fichier, les serveurs de langage et les
formateurs s’installent. C’est volontaire :
nvim-lspconfigcharge surBufReadPre, doncnvimlancé seul sur un buffer vide n’installe aucun serveur. Ouvrir n’importe quel fichier suffit à déclencher l’installation.
:Lazy donne l’état des plugins, :Mason celui des serveurs et formateurs.
Les quatre pages
init.lualigne à ligne, l’ordre de chargement, et les quatre plugins qui chargent au démarrage — avec la raison de chacun.- La source unique dont tout dérive, mason, le LSP natif, conform et blink. Et les pièges qui ne se devinent pas : Vue à deux serveurs, biome contre eslint.
- Recherche floue, explorateur, déplacements, git, treesitter et l’interface. Ce que chacun ajoute, et ce qu’il coûte.
- Les options qui comptent, la carte complète des touches — ce que Neovim 0.12 fournit, ce qui est ajouté — et les raccourcis d’origine qui ont été sacrifiés.