Il 29 marzo 2026 si è svolto il rilascio editor di testo Neovim versione 0.12, e il 6 aprile è stata rilasciata la versione correttiva 0.12.1. Questo è uno dei più grandi rilascio degli ultimi tempi: sono state chiuse oltre 340 questioni, è stato aggiunto un gestore di plugin integrato, un client HTTP, un comando di riavvio, il client LSP integrato è stato notevolmente ampliato e il sottosistema dei messaggi è stato riprogettato sperimentalmente.
Modifiche incompatibili:
- rimossi API obsolete vim.diagnostic;
- Ctrl-R in modalità inserimento ora funziona in modo simile all'inserimento;
- è stata interrotta la supporto per Python 3.7 e 3.8 nei provider;
- plugin shellmenu rimossa, tohtml spostato in pack/dist/opt/;
- Treesitter: la direttiva offset! si applica a tutti i catture, get_parser restituisce nil in caso di errore, rimossa l'opzione «all» in Query:iter_matches;
- LSP: textDocument/codeLens riscritto come provider di decorazione;
- UI: ext_messages disconnesso dalla rete dei messaggi;
- Supporto RFC 3986 in path_with_url.
Il gestore di plugin integrato (vim.pack):
Aggiunto è un gestore di plugin integrato sperimentale vim.pack. Supporta lockfile per fissare le versioni, aggiornamenti offline, indicazione delle versioni target, buffer di conferma con navigazione tramite [[[\/]] e azioni di codice. Le informazioni su VCS sono disponibili tramite vim.pack.get. Il progresso delle operazioni viene visualizzato è mostrato tramite nvim_echo con kind=progress. Integrato con checkhealth.
LSP:
Il client LSP integrato ha ricevuto un ampio aggiornamento:
- nuovo comando :lsp per la gestione interattiva dei client;
- vim.lsp.enable e vim.lsp.is_enabled per gestire i server LSP all'occorrenza;
- completamento automatico integrato in modalità inserimento con supporto per completionItem/resolve (con completeopt=popup), anteprima dei frammenti e colori, supporto CompletionItem.labelDetails;
- selezione incrementale tramite textDocument/selectionRange, compreso in modalità operator-pending;
- textDocument/documentColor attivata per impostazione predefinita, aggiunto supporto per colorPresentation;
- highlightsFromPoint() textDocument/documentLink, textDocument/inlineCompletion, textDocument/onTypeFormatting;
- codeLens visualizzato tramite righe virtuali tramite provider di decorazione;
- miglioramenti ai token semantici: token multi-line, richieste range e full;
- highlightsFromPoint() diagnostiche workspace, registrazione dinamica, richiesta diagnostic/refresh;
- evidenziazione del simbolo rinominato, supporto modifiche di testo annotate e aree di modifica collegate;
- nuove mappature predefinite: grt — passaggio alla definizione del tipo, grx — avvio di codeLens;
- I client LSP si scollegano automaticamente quando cambia il filetype;
- è stato deprecato vim.lsp.stop_client e vim.lsp.util.stylize_markdown.
Il comando :restart e :detach:
Nuovo comando :restart riavvia Nvim e ricollega l'interfaccia utente attuale. Supporto :detach e :restart su Windows. Entrambi funzionano su tutte le piattaforme.
Rete (vim.net):
Aggiunto client HTTP integrato vim.net.request e :edit url. Variante vim.net.request con argomento outbuf scrive direttamente nella memoria indicata la risposta del server.
UI e messaggi:
- ui2 — revisione sperimentale del sottosistema di messaggistica e della riga di comando, ext_cmdline/messages per TUI;
- nuovi gruppi di evidenziazione hl-StderrMsg e hl-StdoutMsg;
- nvim_echo supporta eventi di progresso con kind=progress;
- la barra di stato predefinita visualizza i contatori di diagnostica, progresso e stato LSP, stato di occupazione memorie;
- cornice del menu a comparsa pumborder con barra di scorrimento.
API Lua:
- nuovi tipi vim.Pos e vim.Range per lavorare con posizioni e intervalli, conversione tra i formati di posizione del cursore, extmark, Vim e LSP;
- vim.list.bisect, vim.list.unique;
- Iter:unique, Iter:peek e Iter:skip per iteratori non lista;
- vim.wait restituisce i risultati del callback;
- vim.json.encode supporta la visualizzazione formattata e sort_keys;
- parametro comportamento come funzione per tbl_extend e tbl_deep_extend;
- nuovo modulo vim._async.
Diagnosi:
- diagnostic.status con formattazione personalizzata e evidenziazione;
- filtro abilitato, opzione format per setloclist/setqflist;
- Callback on_jump;
- passaggio alle informazioni correlate da open_float;
- sovrapposizione di evidenziazioni DiagnosticUnnecessary e DiagnosticDeprecated.
Treesitter:
- evidenziazione Markdown abilitata per impostazione predefinita;
- selezione incrementale basata su Treesitter.
Le date YYYY-M-DD e YYYY-MM-D non sono:
- :wall ++p crea directory genitore per ogni buffer;
- exrc cerca file di configurazione nelle directory superiori con richiesta obbligatoria tramite :trust;
- :source può eseguire blocchi Lua e iniezioni Treesitter;
- nvim_open_tabpage — API per creare programmaticamente schede;
- nvim_set_hl con parametro update aggiorna singoli attributi di evidenziazione senza sovrascrivere gli altri;
- stile grassetto e simboli personalizzati in winborder;
- highlightsFromPoint() statusline in finestre fluttuanti;
- rinominato .nvimlog in nvim.log;
- evidenziazione del tabstop attivo negli snippet;
- Runtime integrato per undotree;
- shelltemp=false per impostazione predefinita;
- Spellfile conservato in stdpath data;
- massimo risultati di ricerca aumentato a 999;
- parser di configurazione SSH;
- output sincronizzato nel terminale (modalità 2026);
- terminal mostra codice di uscita tramite testo virtuale.
Neovim 0.12.1:
Versione correttiva del 6 aprile 2026 con 26 correzioni di bug e una nuova funzionalità — :restart riconnette tutti i UI. Tra le correzioni più importanti:
- :restart: ereditarietà di stderr su Unix, gestione corretta —headless;
- LSP: richiesta ripetuta di aggiornamento codeLens, anteprima dei frammenti, ripristino della versione del colore del documento;
- ui2: flash all'accesso al pager, riferimenti errati al buffer, aggiornamento spill indicator;
- Treesitter: evidenziazione con caratteri unicode alla fine del nodo;
- vim.net: elaborazione di URL archivi tramite tar/zip;
- vim.pack: uso di uv.available_parallelism per calcolare il numero di thread;
- Patch di sicurezza di Vim: bypass del modello di sicurezza tramite modeline, bypass del percorso in zip.vim;
- Ottimizzazione di vim.pos: uso di nvim_buf_line_count invece di caricare tutte le righe.
Fonte: linux.org.ru
