No dia 29 de março de 2026, ocorreu lançamento um editor de texto Neovim versão 0.12, e em 6 de abril foi lançado um corrigido lançamento 0.12.1.Este é um dos maiores lançamentos dos últimos tempos: mais de 340 tarefas foram fechadas, um gerenciador de plugins embutido foi adicionado, cliente HTTP, comando de reinício, expanção significativa do cliente LSP embutido e uma reestruturação experimental do subsistema de mensagens.
Mudanças incompatíveis:
- as configurações "browser.tabs.remote.force-enable" e "browser.tabs.remote.force-disable", que podiam ser usadas para desativar o modo de operação multiprocessos (e10s). Além disso, definir "false" na opção "browser.tabs.remote.autostart" agora não irá automaticamente desativar o modo multiprocessos nas versões desktop do Firefox, nas compilações oficiais e ao iniciar sem ativar o modo de execução de testes automatizados; API vim.diagnostic obsoleta;
- Ctrl-R no modo de inserção agora funciona de forma semelhante à inserção;
- o suporte a Python 3.7 e 3.8 nos provedores foi interrompido;
- plugin shellmenu remover, tohtml foi movido para pack/dist/opt/;
- Treesitter: a diretiva offset! aplica-se a todas as captures, get_parser retorna nil em caso de erro, a opção "all" em Query:iter_matches foi removida.;
- LSP: textDocument/codeLens foi reescrito como um provedor de decoração;
- UI: ext_messages desvinculado da rede de mensagens.;
- Suporte a RFC 3986 em path_with_url.
Gerenciador de plugins embutido (vim.pack):
Adicionado gerenciador de plugins embutido experimental vim.pack. Suporta lockfile para fixar versões, atualizações offline, especificação de versões alvo, buffer de confirmação com navegação por [[[\/]] e ações de código. Informações sobre VCS estão disponíveis através de vim.pack.get.O progresso das operações a atividade é mostrado através de nvim_echo com kind=progress. Integrado com checkhealth.
LSP.:
O cliente LSP embutido recebeu uma grande atualização:
- novo comando :lsp para gerenciamento interativo de clientes;
- vim.lsp.enable e vim.lsp.is_enabled para gerenciar servidores LSP conforme necessário;
- autocompletar embutido no modo de inserção com suporte a completionItem/resolve (com completeopt=popup), visualização de snippets e de cores,suporte a CompletionItem.labelDetails;
- determinação incremental através de textDocument/selectionRange,incluindo no modo operator-pending;
- textDocument/documentColor habilitado por padrão, suporte adicionado a colorPresentation;
- suporte textDocument/documentLink, textDocument/inlineCompletion, textDocument/onTypeFormatting;
- codeLens exibido como linhas virtuais através do provedor de decoração;
- melhorias nos tokens semânticos: tokens de várias linhas,consultas range e full;
- suporte diagnósticos workspace, registro dinâmico,solicitação diagnostic/refresh;
- realce do símbolo renomeadosuporte a edições de texto anotadas e intervalos de edição vinculados.;
- novos mapeamentos por padrão: grt — ir para a definição do tipo, grx — iniciar codeLens;
- Clientes LSP são automaticamente desconectados ao mudar o filetype.;
- foram declarados obsoletos vim.lsp.stop_client, e vim.lsp.util.stylize_markdown..
O comando :restart e :detach:
Novo comando :restart reinicia o Nvim e reconecta a interface atual. Suporte para :detach e :restart no Windows.Ambos funcionam em todas as plataformas.
Rede (vim.net):
Cliente HTTP embutido adicionado vim.net.request e :edit url. Opção vim.net.request com argumento outbuf grava a resposta do servidor diretamente no buffer especificado.
UI e mensagens:
- ui2 — reestruturação experimental do subsistema de mensagens e linha de comando, ext_cmdline/messages para TUI;
- novos grupos de destaque hl-StderrMsg e hl-StdoutMsg;
- nvim_echo suporta eventos de progresso com kind=progress;
- barra de status padrão mostra contadores de diagnóstico, progresso e status LSP, estado de ocupação buffer;
- borda de menu pop-up pumborder com barra de rolagem.
API Lua:
- novos tipos vim.Pos e vim.Range para trabalhar com posições e intervalos, conversão entre formatos de posições cursor, extmark, Vim e LSP;
- vim.list.bisect, vim.list.unique;
- Iter:unique, Iter:peek e Iter:skip para iteradores não-list;
- vim.wait retorna resultados de callback;
- vim.json.encode suporta pretty-print e sort_keys;
- parâmetro behavior como função para tbl_extend e tbl_deep_extend;
- novo módulo vim._async.
Diagnóstico:
- diagnostic.status com formatação personalizada e destaque;
- filtro habilitado, opção format para setloclist/setqflist;
- Callback on_jump;
- ir para informações relacionadas de open_float;
- sobreposição de destaques DiagnosticUnnecessary e DiagnosticDeprecated.
Treesitter:
- destaque Markdown habilitado por padrão;
- destacar incremental baseado em Treesitter.
Outras mudanças:
- :wall ++p cria diretórios pai para cada buffer;
- exrc procura arquivos de configuração nos diretórios pai com com confirmação obrigatória via :trust;
- :source pode executar blocos Lua e injeções Treesitter;
- nvim_open_tabpage — API para criação programática de abas;
- nvim_set_hl com parâmetro update atualiza atributos de destaque individuais sem sobrescrever os demais;
- estilo bold e símbolos personalizados em winborder;
- suporte statusline em janelas flutuantes;
- renomear .nvimlog para nvim.log;
- destaque tabstop ativo em snippets;
- Runtime embutido para undotree;
- shelltemp=false por padrão;
- Spellfile armazenado em stdpath data;
- máximo de resultados de pesquisa aumentado para 999;
- parser de configuração SSH;
- saída sincronizada no terminal (modo 2026);
- terminal mostra código de saída via texto virtual.
Neovim 0.12.1:
Versão de correção de 6 de abril de 2026 com 26 correções de bugs e uma nova funcionalidade — :restart reconecta toda a UI. Entre as correções importantes:
- :restart: herança stderr no Unix, manipulação correta —headless;
- LSP: nova solicitação codeLens refresh, visualização de snippets, reset de versão da cor do documento;
- ui2: piscando ao entrar no pager, referências incorretas ao buffer, atualização do indicador spill;
- Treesitter: realce com caracteres unicode no final do nó;
- vim.net: processamento de URLs arquivadas via tar/zip;
- vim.pack: uso de uv.available_parallelism para calcular o número de threads;
- Patchs de segurança do Vim: contornando o modelo de segurança através de modeline, contorno do caminho em zip.vim;
- Otimização de vim.pos: uso de nvim_buf_line_count em vez de carregar todas as linhas.
Fonte: linux.org.ru
