// Éditeurs & terminal

Neovim : configurer un éditeur rapide au clavier

Neovim est un éditeur de texte modal, entièrement pilotable au clavier, qui tourne dans le terminal. C’est un fork moderne de Vim, réécrit pour être plus extensible : il embarque un interpréteur Lua, un client LSP intégré et une API de plugins repensée. Le résultat est un éditeur léger, rapide à démarrer, et que l’on façonne exactement à ses besoins. Ce guide part de zéro : installation, première configuration en Lua, plugins essentiels, et une évaluation honnête de la courbe d’apprentissage.

Pourquoi Neovim plutôt qu’un autre éditeur

L’argument principal n’est pas la vitesse d’exécution — même si un démarrage en quelques dizaines de millisecondes fait plaisir — mais le modèle d’édition. En gardant les mains sur la rangée de repos du clavier, on se déplace, sélectionne et transforme du texte sans jamais toucher la souris. Une fois les mouvements acquis, l’édition devient une suite de commandes composables plutôt qu’une série de clics.

Les autres atouts concrets :

  • Portabilité : Neovim tourne partout où il y a un terminal, y compris sur un serveur distant en SSH.
  • Configuration en Lua : un vrai langage de programmation, versionnable dans un dépôt Git, réutilisable de machine en machine.
  • LSP natif : autocomplétion, diagnostics et « aller à la définition » sans dépendre d’un plugin externe lourd.

À qui ça ne convient pas ? Si vous voulez un éditeur qui fonctionne parfaitement dès l’installation sans y toucher, un IDE clé en main sera moins frustrant. Neovim récompense l’investissement initial, il ne l’évite pas.

Installer Neovim

Selon votre système, l’installation passe par le gestionnaire de paquets. Visez une version récente (0.10 ou plus) pour profiter du LSP moderne.

# macOS (Homebrew)
brew install neovim

# Debian / Ubuntu
sudo apt install neovim

# Arch Linux
sudo pacman -S neovim

# Windows (winget)
winget install Neovim.Neovim

Vérifiez la version installée :

nvim --version

Si votre distribution fournit une version trop ancienne, privilégiez l’AppImage officielle ou un gestionnaire de versions plutôt que le paquet système.

La structure de configuration

Neovim lit sa configuration depuis un dossier dédié. Sur Linux et macOS, il s’agit de ~/.config/nvim/. La porte d’entrée est le fichier init.lua.

mkdir -p ~/.config/nvim
touch ~/.config/nvim/init.lua

On peut tout mettre dans ce seul fichier au début, puis découper en modules quand il grossit. Voici une base saine à placer dans init.lua :

-- Espace comme touche « leader » (préfixe des raccourcis perso)
vim.g.mapleader = " "

-- Numéros de ligne, dont numérotation relative pour les sauts
vim.opt.number = true
vim.opt.relativenumber = true

-- Indentation : 2 espaces, pas de tabulations dures
vim.opt.expandtab = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2

-- Recherche insensible à la casse, sauf si une majuscule est saisie
vim.opt.ignorecase = true
vim.opt.smartcase = true

-- Confort visuel
vim.opt.termguicolors = true
vim.opt.scrolloff = 8
vim.opt.signcolumn = "yes"

Chaque option est documentée : tapez :help relativenumber dans Neovim pour lire ce que fait un réglage. Cette aide intégrée est la meilleure ressource pour comprendre sa configuration.

Comprendre l’édition modale

Avant les plugins, il faut apprivoiser le concept central : Neovim a des modes. Le comportement des touches change selon le mode actif.

  • Normal (par défaut) : les touches sont des commandes de navigation et d’édition. dw supprime un mot, yy copie une ligne.
  • Insertion (i, a, o) : on saisit du texte comme dans un éditeur classique.
  • Visuel (v, V) : on sélectionne du texte.
  • Commande (:) : on tape des commandes comme :w (enregistrer) ou :q (quitter).

La force du modèle vient de la composition : un opérateur suivi d’un mouvement. d (delete) + $ (fin de ligne) supprime jusqu’au bout de la ligne ; c (change) + i( (inside parenthèses) remplace le contenu entre parenthèses. Une fois cette grammaire intégrée, on exprime des éditions complexes en trois ou quatre touches.

Le réflexe de survie : pour revenir en mode normal depuis n’importe où, appuyez sur Échap. Pour quitter Neovim, :q (ou :q! pour forcer sans enregistrer).

Installer un gestionnaire de plugins

L’écosystème s’organise autour d’un gestionnaire de plugins. lazy.nvim est aujourd’hui le standard de fait : il charge les plugins à la demande, ce qui garde le démarrage rapide. On l’amorce en début d’init.lua :

-- Amorçage automatique de lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git", "clone", "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

-- Déclaration des plugins
require("lazy").setup({
  -- les plugins viendront ici
})

Au prochain lancement, Neovim clonera lazy.nvim tout seul. La commande :Lazy ouvre ensuite un tableau de bord pour installer, mettre à jour ou profiler vos plugins.

Les trois plugins qui changent tout

Ajoutez ces entrées dans la table passée à require("lazy").setup({ ... }).

1. Telescope — la recherche floue. Trouver un fichier, une chaîne de texte dans le projet ou un symbole, le tout en quelques frappes.

{
  "nvim-telescope/telescope.nvim",
  dependencies = { "nvim-lua/plenary.nvim" },
  config = function()
    local builtin = require("telescope.builtin")
    vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "Chercher un fichier" })
    vim.keymap.set("n", "<leader>fg", builtin.live_grep, { desc = "Chercher dans le texte" })
  end,
},

Avec cette config, Espace f f ouvre le sélecteur de fichiers et Espace f g cherche du texte dans tout le projet.

2. Treesitter — la coloration syntaxique fine. Une analyse réelle du code plutôt qu’une coloration à base d’expressions régulières.

{
  "nvim-treesitter/nvim-treesitter",
  build = ":TSUpdate",
  config = function()
    require("nvim-treesitter.configs").setup({
      ensure_installed = { "lua", "python", "javascript", "html", "css" },
      highlight = { enable = true },
    })
  end,
},

3. LSP — l’intelligence de code. C’est ce qui apporte l’autocomplétion contextuelle, les erreurs en temps réel et le renommage. mason.nvim installe les serveurs de langage, nvim-lspconfig les câble.

{ "williamboman/mason.nvim", config = true },
{
  "williamboman/mason-lspconfig.nvim",
  dependencies = { "neovim/nvim-lspconfig" },
  config = function()
    require("mason-lspconfig").setup({
      ensure_installed = { "lua_ls", "pyright" },
    })
    require("lspconfig").lua_ls.setup({})
    require("lspconfig").pyright.setup({})
  end,
},

Une fois en place, placez le curseur sur un symbole et appuyez sur K pour la documentation, gd pour aller à la définition. Ces raccourcis LSP sont ceux qui rapprochent Neovim d’un IDE complet, sujet que l’on compare dans notre panorama des meilleurs IDE pour développeurs en 2026.

La courbe d’apprentissage, sans enrober

Soyons clairs : les premiers jours sont inconfortables. Vous serez plus lent qu’avec votre éditeur habituel, vous chercherez comment quitter, vous vous tromperez de mode. C’est normal, et cela passe.

Un rythme d’adoption réaliste :

  • Jour 1 : faites nvim puis tapez :Tutor. Ce tutoriel intégré de 30 minutes couvre les mouvements de base. Le meilleur temps que vous investirez.
  • Semaine 1 : forcez-vous à utiliser Neovim pour de petites éditions. Gardez une antisèche des mouvements (w, b, dd, ciw) à côté de l’écran.
  • Mois 1 : les mouvements deviennent des réflexes. Vous commencez à composer sans y penser et à ajouter vos propres raccourcis.

Conseil : n’installez pas trente plugins la première semaine. Une config minimale que vous comprenez vaut mieux qu’une distribution préfaite (LazyVim, NvChad) dont vous ignorez le fonctionnement. Vous ajouterez les outils quand un vrai besoin apparaîtra.

Un éditeur qui grandit avec vous

Neovim n’est pas l’éditeur le plus simple à prendre en main, mais c’est l’un des plus durables. La configuration en Lua est un dépôt Git que vous transportez de poste en poste ; le modèle modal, une fois acquis, ne se désapprend pas. Commencez petit, ajoutez ce qui vous manque réellement, et laissez votre configuration se sédimenter au fil des mois. C’est un outil que l’on possède, pas seulement que l’on utilise.

À lire ensuite