Configuration Neovim ≥ 0.11 clé en main visant à reproduire l'expérience IntelliJ Ultimate : navigation rapide, refactorings, debug, tests, Docker, LSP complet et workflow DevOps-friendly.
Ce setup est pensé pour :
- développeurs backend / full‑stack
- DevOps / Platform engineers
- utilisateurs IntelliJ souhaitant migrer progressivement vers Neovim
# Installation
chmod +x install.sh
./install.sh
# Vérification
./healthcheck.sh
# Guide utilisateur complet
Voir GETTING_STARTED.md- 7 thèmes avec sélecteur (
<leader>ut) : Tokyo Night, Dracula, Catppuccin, Nord, Gruvbox, Cyberpunk, Matrix - Statusline Lualine
- Onglets Bufferline
- Explorateur de fichiers NvimTree
- Notifications & cmdline avancés (Noice)
- Menus contextuels améliorés (Dressing)
- Aide dynamique des raccourcis (Which‑key)
- Icônes (nvim-web-devicons, mini.icons)
- Recherche fichiers / texte / symboles (Telescope)
- Détection automatique de projet (project.nvim)
- Diagnostics centralisés (Trouble)
- Navigation rapide (Leap, Harpoon)
- Gestion des serveurs via Mason
- Configuration LSP native Neovim 0.11 (
vim.lsp.config) - Breadcrumbs (symboles) dans la winbar (nvim-navic)
- Complétion (nvim-cmp) + snippets (LuaSnip)
- none-ls (ex null-ls) pour formatters & linters
- Format on save
- Installation outillage via Mason (on‑demand)
- Gitsigns (blame, hunks)
- Neogit (UI Git)
- Diffview
- Octo (PRs/Issues GitHub)
- Advanced Git Search
- Terminal intégré (ToggleTerm)
- Runner de tâches (Overseer)
- Debug (nvim-dap, dap-ui, dap-virtual-text)
- Intégration Docker via Telescope
- Kubernetes : kubectl.nvim, yamlls avec schémas
- Terraform : terraformls, formatage auto
- Ansible : ansiblels, syntax highlighting
- Helm : helm_ls, support charts
- SQL : sqlls, vim-dadbod-ui (interface graphique)
- Support : PostgreSQL, MySQL, SQLite, etc.
- Intégration Claude Code (agent IA de développement)
- LSP :
ts_ls - Lint : ESLint
- Format : Prettier
- Frameworks : React / Vue / Next.js
- LSP :
html,cssls,tailwindcss - Format : Prettier
- Autotag JSX/HTML
- LSP :
jsonls,yamlls(avec schémas K8s/Docker/GitHub Actions) - Lint : markdownlint
- Format : Prettier
- LSP :
prismals - Format : prisma_format
- LSP :
bashls - Format : shfmt
- LSP :
dockerls - Exploration : containers / images / volumes
- Configuration Neovim native
D'autres langages peuvent être ajoutés facilement via
:Mason.
chmod +x install.sh
./install.shOptions utiles :
./install.sh --dry-run
./install.sh --prefix=$HOME/.local/bin
⚠️ Important : Lance les scripts avec bash (./install.shoubash install.sh), pas avecsh.
Adaptez la configuration à votre usage avec les profils :
| Profil | Description | Cas d'usage |
|---|---|---|
minimal |
Core IDE (LSP, completion) | Édition rapide, SSH |
javascript |
Minimal + JS/TS tooling | Développement frontend |
devops |
Minimal + K8s, Terraform, Docker | Platform engineering |
full |
Tout (défaut) | Configuration complète |
-- Dans init.lua, avant le chargement des plugins
vim.g.nvim_profile = "devops" -- ou "minimal", "javascript", "full"Voir PROFILES.md pour plus de détails.
Script fourni : intellij-migrate.sh
Fonctionnalités :
- Keymaps proches d'IntelliJ (Ctrl+P, Ctrl+Shift+F, Alt+Enter, etc.)
- Cheatsheet généré dans
~/.config/nvim/INTELLIJ_MIGRATION.md - Activation / désactivation simple
./intellij-migrate.sh
./intellij-migrate.sh --remove- GETTING_STARTED.md - Guide complet pour démarrer avec Neovim
- PROFILES.md - Système de profils (minimal, javascript, devops, full)
- PROJECT_CONFIG.md - Configuration spécifique par projet
- KEYMAPS_AUDIT.md - Audit complet des keymaps disponibles
- TESTING.md - Documentation des tests automatisés
- TROUBLESHOOTING.md - Guide de dépannage détaillé
- CONTRIBUTING.md - Guide pour contribuer au projet
- CHANGELOG.md - Historique des versions
./healthcheck.sh# Nettoyage standard (cache uniquement)
./clean-restart.sh
# Nettoyage complet avec réinstallation des plugins
./clean-restart.sh --deep
# Voir ce qui serait nettoyé sans rien supprimer
./clean-restart.sh --dry-run
# Nettoyage profond sans confirmation
./clean-restart.sh --deep -yLe projet inclut des tests automatisés pour garantir la qualité :
- ✅ Tests des keymaps (< 1 seconde)
- ✅ Smoke tests Neovim
- ✅ Pre-commit hooks (shellcheck, stylua, luacheck)
- ✅ GitHub Actions CI
Voir TESTING.md pour plus de détails.
Mason installe des outils de façon asynchrone. En mode headless, Neovim peut quitter avant la fin.
✅ Ce dépôt évite désormais tout auto-install en headless (ensure_installed vide), et recommande d'installer les outils à la demande :
:MasonInstallDevTools✅ Fix :
rm -rf ~/.local/share/nvim/lazy-rocksLe script install.sh le fait automatiquement.
L'étape npm i -g neovim tree-sitter-cli peut être lente (réseau, proxy, registry).
Le script install.sh :
- tente l'installation avec retry
- écrit un log dans
~/.nvim-install-logs/npm-providers.log - est non-bloquant : en cas d'échec, l'installation continue.
Tu peux aussi accélérer via variables :
export NPM_CONFIG_AUDIT=false
export NPM_CONFIG_FUND=false
export NPM_CONFIG_PROGRESS=falsenone-ls fournit nativement eslint_d (plus rapide et plus courant en local).
✅ Fix :
:MasonInstall eslint_d
# ou
:MasonInstallDevToolsproject.nvim utilise encore vim.lsp.buf_get_clients() (supprimé en Neovim 0.12).
Un patch de compatibilité est appliqué automatiquement via :
nvim/after/plugin/project-nvim-compat.lua- et une surcharge dans
lua/config/options.lua
Ce patch n'affecte pas le comportement (il redirige vers vim.lsp.get_clients()), et pourra être retiré quand project.nvim aura été mis à jour.
En mode headless, Neovim est souvent silencieux et donne l'impression d'être bloqué, surtout quand Treesitter compile les parsers.
La procédure la plus fiable est de séparer l'installation :
nvim --headless "+Lazy! sync" +qa
nvim --headless "+TSUpdate" +qaLe script install.sh fait maintenant exactement ça, avec :
- logs dans
~/.nvim-install-logs/ - timeouts configurables :
--lazy-timeout=600,--ts-timeout=900 - mode verbeux :
./install.sh --verbose
:echo exepath("node")Si vide, relancer Neovim depuis un shell avec NVM actif.
Note : Treesitter et les plugins qui en dépendent sont actifs dans cette configuration.
Plugins actifs :
nvim-treesitter- Coloration syntaxique avancéenvim-ts-autotag- Auto-fermeture des balises HTML/JSXaerial.nvim- Vue structure/outlineneotest- Framework de testsrefactoring.nvim- Outils de refactoring
Parsers installés automatiquement : lua, javascript, typescript, tsx, html, css, json, bash, markdown, prisma
Pour ajouter des parsers :
:TSInstall <langage>./uninstall.shUn backup complet est toujours effectué avant suppression.
Chaque PR et push sur main déclenche des tests complets sur :
- Ubuntu : Installation complète + healthcheck
- Debian : Installation complète en container
- Fedora : Installation complète en container
- macOS : Installation via Homebrew + config
Voir .github/workflows/install-check.yml pour les détails
Cette configuration utilise :
- l'API LSP native
vim.lsp.config - des améliorations Lazy.nvim récentes
- une gestion moderne des diagnostics et capacités
Les versions antérieures (0.9 / 0.10) ne sont pas supportées.
Oui partiellement.
Sans Node.js :
- LSP fonctionne
- Git / Debug / Tests fonctionnent
- UI complète disponible
Mais tu perds :
- Prettier
- ESLint diagnostics
- Markdownlint
Pour une expérience IntelliJ-like complète, Node.js est recommandé.
Mason permet :
- des versions cohérentes par projet
- une installation isolée utilisateur
- aucun impact sur le système
- une config reproductible (CI / onboarding)
C'est l'équivalent de ce qu'IntelliJ fait en interne.
Oui.
Avantages :
- versionnable (Git)
- reproductible
- documentation intégrée
- tests automatisés
C'est parfaitement adapté à un usage équipe / entreprise.
- Installer le serveur :
:Mason- Ajouter la config LSP dans
lua/plugins/lsp.lua:
vim.lsp.config("mon_langage_ls", {})- (Optionnel) Ajouter formatter/linter via
none-ls.
Oui, plusieurs options :
- Profils : utiliser
minimal,javascriptoudevopsau lieu defull(voir PROFILES.md) - Par projet : créer
.nvim/config.luapour personnaliser (voir PROJECT_CONFIG.md) - Manuellement : commenter un plugin dans
lua/plugins/ - IntelliJ layer :
./intellij-migrate.sh --remove
Lazy.nvim apporte :
- lazy-loading réel (events, ft, keys)
- meilleure performance au démarrage
- gestion native des dépendances
- diagnostics clairs
C'est aujourd'hui le standard de facto.
Fonctionnellement : oui dans la majorité des cas.
Différences :
- Neovim est plus léger et scriptable
- IntelliJ reste plus plug-and-play pour Java/Kotlin
- Neovim est supérieur pour SSH / serveurs distants / DevOps
Beaucoup utilisent les deux selon le contexte.
- Config :
~/.config/nvim - Plugins :
~/.local/share/nvim - Cache :
~/.cache/nvim
Les scripts fournis font toujours un backup avant modification.
Neovim comme IntelliJ… mais scriptable, portable, versionnable, et sous ton contrôle.
- Approche "IntelliJ-like" : keymaps, UX et plugins choisis pour une expérience IDE cohérente (pas un framework généraliste).
- Indus-friendly : scripts d'installation, CI (lint + smoke test), fichiers OSS standards, SemVer.
- Lisible : plugins organisés par domaine (
lua/plugins/*), conventions simples, configuration explicite. - Opt-in : les features avancées (ex: AI) restent modulaires et évitent le lock-in.
- Tests automatisés : Validation continue des keymaps et de la configuration.
This project is distributed under the GNU General Public License v3.0.
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
eslint_dest chargé vianone-ls-extras(fallback verseslintsi nécessaire).nvim/lazy-lock.jsonest fourni comme point de départ : exécute:Lazy syncpuis commit le lock pour figer les versions.- Les keymaps sont validés automatiquement via CI (
scripts/test-keymaps.sh)
- Versioning :
VERSIONING.md - Roadmap :
ROADMAP.md - Releases : Voir
releases/v1.0.0.md