Il 29 marzo 2026 è stato rilasciato rilascio l'editor di testo Neovim nella versione 0.12, e il 6 aprile è stata pubblicata la correzione della versione 0.12.1. Questo è uno dei più grandi rilasci recenti: sono state chiuse oltre 340 problematiche, aggiunto un gestore di plugin integrato, un client HTTP, il comando di riavvio, esteso notevolmente il client LSP integrato e riprogettato sperimentalmente il sottosistema dei messaggi.
Cambiamenti non compatibili:
- rimosse API deprecate vim.diagnostic;
- Ctrl-R in modalità inserimento ora funziona in modo analogo all'inserimento;
- il supporto per Python 3.7 e 3.8 nei provider è stato interrotto;
- il plugin shellmenu è stato rimosso, tohtml spostato in pack/dist/opt;
- Treesitter: la direttiva offset! si applica a tutte le catture, get_parser restituisce nil in caso di errore, l'opzione «all» in Query:iter_matches è stata rimossa;
- LSP: textDocument/codeLens è stato riscritto come provider di decorazione;
- UI: ext_messages disaccoppiato dalla griglia dei messaggi;
- Supporto per 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 il blocco delle versioni, aggiornamenti offline, indicazione delle versioni target, buffer di conferma con navigazione attraverso [[[/]] e azioni di codice. Le informazioni sul VCS sono disponibili tramite vim.pack.get. Il progresso delle operazioni viene mostrato tramite nvim_echo con kind=progress. Integrato con checkhealth.
LSP:
Il client LSP incorporato ha ricevuto un aggiornamento sostanziale:
- un nuovo comando :lsp per la gestione interattiva dei client;
- vim.lsp.enable e vim.lsp.is_enabled per gestire i server LSP secondo necessità;
- completamento automatico integrato in modalità inserimento con supporto completionItem/resolve (con completeopt=popup), anteprima dei frammenti e colori, supporto CompletionItem.labelDetails;
- selezione incrementale tramite textDocument/selectionRange, incluso in modalità operator-pending;
- textDocument/documentColor attivata per impostazione predefinita, aggiunto supporto per colorPresentation;
- supporto textDocument/documentLink, textDocument/inlineCompletion, textDocument/onTypeFormatting;
- codeLens visualizzato da righe virtuali attraverso provider di decorazione;
- miglioramenti ai token semantici: token multilinea, richieste range e full;
- supporto diagnostica workspace, registrazione dinamica, richiesta diagnostic/refresh;
- evidenziazione del simbolo rinominato, supporto modifiche di testo annotate e intervalli di modifica collegati;
- nuove mappature predefinite: grt — vai alla definizione del tipo, grx — esegui codeLens;
- I client LSP si disconnettono automaticamente al cambio di filetype;
- dichiarati obsoleti vim.lsp.stop_client e vim.lsp.util.stylize_markdown.
I comandi :restart e :detach:
Nuovo comando :restart riavvia Nvim e riconnette l'interfaccia attuale. Supporto :detach e :restart su Windows. Entrambe funzionano su tutte le piattaforme.
Rete (vim.net):
Client HTTP integrato aggiunto vim.net.request e :edit url. Opzione vim.net.request con il parametro outbuf scrive la risposta del server direttamente nel buffer specificato.
UI e messaggi:
- ui2 — revisione sperimentale del sottosistema di messaggi 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 mostra contatori diagnostici, progresso e stato LSP, stato di occupazione del buffer;
- 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 formati di posizioni di cursore, extmark, Vim e LSP;
- vim.list.bisect, vim.list.unique;
- Iter:unique, Iter:peek e Iter:skip per iteratori non-list;
- vim.wait restituisce i risultati del callback;
- vim.json.encode supporta la stampa formattata e sort_keys;
- parametro comportamento come funzione per tbl_extend e tbl_deep_extend;
- nuovo modulo vim._async.
Diagnostica:
- Diagnostica con diagnostic.status e formattazione personalizzata;
- evidenziazione, filtro abilitato opzione format
- per setloclist/setqflist;;
- Callback on_jump passa alle informazioni correlate
- da open_float; sovrapposizione di evidenziazioni
DiagnosticUnnecessary e DiagnosticDeprecated.:
- Treesitter;
- evidenziazione incrementale basata su Treesitter.
Altre modifiche:
- :wall ++p crea directory genitore per ogni buffer;
- exrc cerca file di configurazione nelle directory superiori con richiesta di conferma tramite :trust;
- :source può eseguire blocchi Lua e iniezioni Treesitter;
- nvim_open_tabpage — API per creare schede programmaticamente;
- nvim_set_hl con parametro update aggiorna singoli attributi di evidenziazione senza sovrascrivere gli altri;
- stile grassetto e simboli personalizzati in winborder;
- supporto statusline nelle finestre flottanti;
- rinomina .nvimlog in nvim.log;
- evidenziazione del tabstop attivo negli snippet;
- Runtime integrato per undotree;
- shelltemp=false di default;
- Spellfile memorizzato in stdpath data;
- massimo risultati di ricerca incrementato a 999;
- parser di configurazione SSH;
- output sincronizzato nel terminale (modalità 2026);
- terminale mostra codice di uscita tramite testo virtuale.
Neovim 0.12.1:
Rilascio correttivo del 6 aprile 2026 con 26 correzioni e una nuova funzionalità — :restart riattacca tutte le interfacce utente. Tra le correzioni importanti:
- :restart: ereditarietà stderr su Unix, gestione corretta —headless;
- LSP: richiesta di aggiornamento codeLens ripetuta, anteprima dei frammenti, ripristino della versione color document;
- ui2: sfarfallio all'ingresso nel pager, link errati nel buffer, aggiornamento spill indicator;
- Treesitter: evidenziazione con simboli unicode alla fine del nodo;
- vim.net: gestione degli URL archiviati tramite tar/zip;
- vim.pack: utilizzo 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 vim.pos: uso di nvim_buf_line_count invece di caricare tutte le righe.
Fonte: linux.org.ru
