El 29 de marzo de 2026 se llevó a cabo lanzamiento el editor de texto Neovim versión 0.12, y el 6 de abril se lanzó una versión corregida 0.12.1. Este es uno de los lanzamientos más importantes en tiempo reciente: se han cerrado más de 340 tareas, se han añadido un administrador de plugins integrado, un cliente HTTP, un comando de reinicio, se ha ampliado considerablemente el cliente LSP integrado y se ha reestructurado experimentalmente el subsistema de mensajes.
Cambios incompatibles:
- eliminados API obsoletos vim.diagnostic;
- Ctrl-R en modo de inserción ahora funciona igual que la inserción;
- se ha descontinuado el soporte para Python 3.7 y 3.8 en proveedores;
- plugin shellmenu eliminado, tohtml movido a pack/dist/opt/;
- Treesitter: la directiva offset! se aplica a todas las captures, get_parser devuelve nil en caso de error, se ha eliminado la opción «all» en Query:iter_matches;
- LSP: textDocument/codeLens reescrito como proveedor de decoración;
- UI: ext_messages desvinculado de la cuadrícula de mensajes;
- Soporte RFC 3986 en path_with_url.
Administrador de plugins integrado (vim.pack):
Se añadió administrador de plugins integrado experimental vim.pack. Soporta lockfile para fijar versiones, actualizaciones fuera de línea, especificación de versiones objetivo, buffer de confirmación con navegación por [[[\/]] y acciones de código. La información de VCS está disponible a través de vim.pack.get. El progreso de las operaciones la actividad a través de nvim_echo con kind=progress. Integrado con checkhealth.
LSP:
El cliente LSP integrado ha recibido una actualización masiva:
- nuevo comando :lsp para gestionar interactivamente los clientes;
- vim.lsp.enable y vim.lsp.is_enabled para gestionar servidores LSP según sea necesario;
- autocompletado integrado en modo de inserción con soporte de completionItem/resolve (al tener completeopt=popup), vista previa de snippets y de colores, soporte de CompletionItem.labelDetails;
- selección incremental a través de textDocument/selectionRange, incluyendo en modo operator-pending;
- textDocument/documentColor activado por defecto, se ha añadido soporte de colorPresentation;
- soporte textDocument/documentLink, textDocument/inlineCompletion, textDocument/onTypeFormatting;
- codeLens se muestra como líneas virtuales a través de un proveedor de decoración;
- mejoras en tokens semánticos: tokens multilineales, consultas range y full;
- soporte diagnósticos de workspace, registro dinámico, consulta diagnostic/refresh;
- resaltado de símbolos renombrados, soporte de ediciones de texto anotadas y rangos de edición enlazados;
- nuevos mapeos por defecto: grt — ir a la definición del tipo, grx — iniciar codeLens;
- Los clientes LSP se desconectan automaticamente al cambiar el filetype;
- declarados obsoletos vim.lsp.stop_client y vim.lsp.util.stylize_markdown.
El comando :restart y :detach:
Nuevo comando :restart reinicia Nvim y reconecta la UI actual. Soporte de :detach y :restart en Windows. Ambas funcionan en todas las plataformas.
Red (vim.net):
Se ha añadido un cliente HTTP integrado vim.net.request y :edit url. Opción vim.net.request con el argumento outbuf escribe la respuesta del servidor directamente en el búfer especificado.
UI y mensajes:
- ui2 — una revisión experimental del subsistema de mensajes y línea de comando, ext_cmdline/messages para TUI;
- nuevos grupos de resaltado hl-StderrMsg y hl-StdoutMsg;
- nvim_echo soporta eventos de progreso con kind=progress;
- la barra de estado por defecto muestra contadores de diagnóstico, progreso y estado de LSP, estado de actividad del búfer;
- marco del menú emergente pumborder con barra de desplazamiento.
API de Lua:
- nuevos tipos vim.Pos y vim.Range para trabajar con posiciones y rangos, conversión entre formatos de posiciones del cursor, extmark, Vim y LSP;
- vim.list.bisect, vim.list.unique;
- Iter:unique, Iter:peek y Iter:skip para iteradores no list;
- vim.wait devuelve los resultados del callback;
- vim.json.encode soporta pretty-print y sort_keys;
- parámetro comportamiento como función para tbl_extend y tbl_deep_extend;
- nuevo módulo vim._async.
Diagnóstico:
- diagnostic.status con formateo personalizado y resaltado;
- filtro habilitado, opción de formato para setloclist/setqflist;
- Callback on_jump;
- ir a información relacionada desde open_float;
- superposición de resaltados DiagnosticUnnecessary y DiagnosticDeprecated.
Treesitter:
- resaltado de Markdown habilitado por defecto;
- resaltado incremental basado en Treesitter.
Las fechas YYYY-M-DD y YYYY-MM-D ya no se interpretan:
- :wall ++p crea directorios padres para cada búfer;
- exrc busca archivos de configuración en directorios padres con confirmación obligatoria a través de :trust;
- :source puede ejecutar bloques de Lua e inyecciones de Treesitter;
- nvim_open_tabpage — API para crear pestañas programáticamente;
- nvim_set_hl con el parámetro update actualiza atributos individuales de resaltado sin sobrescribir otros;
- estilo negrita y símbolos personalizados en winborder;
- soporte barra de estado en ventanas flotantes;
- renombrar .nvimlog a nvim.log;
- resaltado de tabstop activo en fragmentos;
- Runtime incorporado para undotree;
- shelltemp=false por defecto;
- Spellfile se guarda en stdpath data;
- máximo de resultados de búsqueda aumentado a 999;
- SSH configuration parser;
- salida sincronizada en la terminal (modo 2026);
- terminal muestra el código de salida a través de texto virtual.
Neovim 0.12.1:
Lanzamiento correctivo del 6 de abril de 2026 con 26 correcciones de errores y una nueva característica—:restart reconecta todas las UI. Entre las correcciones importantes:
- :restart: herencia de stderr en Unix, manejo correcto —headless;
- LSP: nueva solicitud de refresh de codeLens, vista previa de snippets, reinicio de color de documento;
- ui2: parpadeo al entrar en pager, enlaces incorrectos a búfer, actualización del indicador de desbordamiento;
- Treesitter: resaltado con caracteres unicode al final del nodo;
- vim.net: manejo de URL archivadas mediante tar/zip;
- vim.pack: uso de uv.available_parallelism para calcular el número de hilos;
- Parches de seguridad de Vim: contrarrestar el modelo de seguridad a través de modeline, contorno de ruta en zip.vim;
- Optimización de vim.pos: uso de nvim_buf_line_count en lugar de cargar todas las líneas.
Fuente: linux.org.ru
