Le 29 mars 2026 a eu lieu la sortie l'éditeur de texte Neovim version 0.12, et le 6 avril est sortie la mise à jour correctrice 0.12.1. C'est l'une des plus grandes versions récentes : plus de 340 problèmes résolus, ajout d'un gestionnaire de plugins intégré, d'un client HTTP, d'une commande de redémarrage, et considérablement élargi le client LSP intégré, ainsi qu'une refonte expérimentale du sous-système de messages.
Changements incompatibles:
- supprimées API vim.diagnostic obsolète ;
- Ctrl-R en mode insertion fonctionne désormais de manière similaire à l'insertion;
- le support de Python 3.7 et 3.8 dans les fournisseurs a été interrompu ;
- plugin shellmenu supprimé, tohtml déplacé dans pack/dist/opt/ ;
- Treesitter : la directive offset ! s'applique à toutes les captures, get_parser retourne nil en cas d'erreur, l'option « all » dans Query:iter_matches a été supprimée;
- LSP : textDocument/codeLens réécrit en tant que fournisseur de décoration;
- UI : ext_messages détaché de la grille de messages;
- Support RFC 3986 dans path_with_url.
Le gestionnaire de plugins intégré (vim.pack):
Ajouté est un gestionnaire de plugins intégré expérimental vim.pack. Supporte lockfile pour fixer les versions, mises à jour hors ligne, spécification des versions cibles, tampon de confirmation avec navigation par [[[ / ]] et actions de code. Les informations sur VCS sont disponibles via vim.pack.get. L'avancement des opérations affiché via nvim_echo avec kind=progress. Intégré avec checkhealth.
LSP:
Le client LSP intégré a reçu une mise à jour majeure :
- nouvelle commande :lsp pour gérer les clients de manière interactive ;
- vim.lsp.enable et vim.lsp.is_enabled pour gérer les serveurs LSP au besoin ;
- autocomplétion intégrée en mode insertion avec support de completionItem/resolve (lorsque completeopt=popup), aperçus des extraits et couleurs, support de CompletionItem.labelDetails;
- sélection incrémentielle via textDocument/selectionRange, y compris en mode en attente d'opérateur;
- textDocument/documentColor est activé par défaut, ajout de la prise en charge de colorPresentation;
- la prise en charge textDocument/documentLink, textDocument/inlineCompletion, textDocument/onTypeFormatting;
- codeLens affiché dans des lignes virtuelles via le fournisseur de décoration ;
- améliorations des jetons sémantiques : jetons multilignes, requêtes range et full;
- la prise en charge diagnostics de l'espace de travail, inscription dynamique, requête diagnostic/refresh;
- mise en évidence des symboles renommés, support de modifications de texte annotées et plages d'édition liées;
- nouvelles mappages par défaut : grt — aller à la définition du type, grx — déclencher codeLens ;
- Les clients LSP sont automatiquement déconnectés lors du changement de type de fichier;
- sont déclarés obsolètes vim.lsp.stop_client et vim.lsp.util.stylize_markdown.
La commande :restart et :detach:
Nouvelle commande :restart redémarre Nvim et reconnecte l'UI actuelle. Prise en charge de :detach et :restart sous Windows. Les deux fonctionnent sur toutes les plateformes.
Réseau (vim.net):
Client HTTP intégré ajouté vim.net.request et :edit url. Variante vim.net.request avec l'argument outbuf enregistre la réponse du serveur directement dans le tampon spécifié.
UI et messages:
- ui2 — révision expérimentale du sous-système des messages et de la ligne de commande, ext_cmdline/messages pour TUI;
- nouveaux groupes de surbrillance hl-StderrMsg et hl-StdoutMsg;
- nvim_echo prend en charge événements de progression avec kind=progress;
- barre d'état par défaut affiche les compteurs de diagnostic, la progression et l'état LSP, état d'occupation des tampons;
- cadre de menu contextuel pumborder avec barre de défilement.
API Lua:
- nouveaux types vim.Pos et vim.Range pour travailler avec des positions et des plages, conversion entre formats de positions curseur, extmark, Vim et LSP;
- vim.list.bisect, vim.list.unique;
- Iter:unique, Iter:peek et Iter:skip pour des itérateurs non-list;
- vim.wait retourne les résultats de callback;
- vim.json.encode prend en charge l'impression jolie et sort_keys;
- paramètre comportement sous forme de fonction pour tbl_extend et tbl_deep_extend;
- nouveau module vim._async.
Diagnostic:
- diagnostic.status avec formatage personnalisé et surbrillance;
- filtre activé, option format pour setloclist/setqflist;
- Callback on_jump;
- passer à l'information associée depuis open_float;
- superposition de surbrillances DiagnosticUnnecessary et DiagnosticDeprecated.
Treesitter:
- la surbrillance Markdown est activée par défaut;
- surbrillance incrémentale basée sur Treesitter.
Autres modifications:
- :wall ++p crée des répertoires parents pour chaque tampon;
- exrc cherche des fichiers de configuration dans les répertoires parents avec avec une confirmation obligatoire via :trust;
- :source peut exécuter des blocs Lua et des injections Treesitter;
- nvim_open_tabpage — API pour la création de pages d'onglets par programme;
- nvim_set_hl avec le paramètre update met à jour des attributs de surbrillance individuels sans écraser les autres;
- style gras et symboles personnalisés dans winborder;
- la prise en charge barre d'état dans les fenêtres flottantes;
- renommage de .nvimlog en nvim.log;
- surbrillance de l'onglet actif dans les extraits;
- Runtime intégré pour undotree;
- shelltemp=false par défaut ;
- Spellfile conservé dans stdpath data;
- le nombre maximum de résultats de recherche a été augmenté à 999;
- parser de configuration SSH;
- sortie synchronisée dans le terminal (mode 2026);
- terminal affiche le code de sortie via du texte virtuel.
Neovim 0.12.1:
Publication corrective du 6 avril 2026 avec 26 corrections de bogues et une nouvelle fonctionnalité — :restart reconnecte toutes les UI. Parmi les corrections importantes :
- :restart : héritage stderr sur Unix, traitement correct de —headless;
- LSP : requête réitérée pour le rafraîchissement codeLens, aperçus des extraits, réinitialisation de la couleur du document;
- ui2 : clignotement lors de l'entrée dans le pager, liens incorrects vers le tampon, mise à jour de l'indicateur de déversement;
- Treesitter : mise en surbrillance avec des caractères unicode à la fin du nœud;
- vim.net : traitement des URL d'archives via tar/zip;
- vim.pack : utilisation de uv.available_parallelism pour calculer le nombre de threads ;
- Mises à jour de sécurité Vim : contournement du modèle de sécurité via modeline, contournement du chemin dans zip.vim;
- Optimisation de vim.pos : utilisation de nvim_buf_line_count au lieu de charger toutes les lignes.
Source : linux.org.ru
