Neovim 0.10, una bifurcación del editor Vim centrada en aumentar la extensibilidad y la flexibilidad, ha sido lanzada. El proyecto ha estado reelaborando el código base de Vim durante más de 10 años, introduciendo cambios que simplifican el mantenimiento del código, proporcionan herramientas para dividir el trabajo entre múltiples mantenedores, desacoplan la interfaz del núcleo (la interfaz se puede cambiar sin afectar a los componentes internos) e implementan una nueva arquitectura extensible basada en complementos. El trabajo original del proyecto está bajo la licencia Apache 2.0, y la parte central está bajo la licencia Vim. Las compilaciones finales están disponibles para Linux (appimage), Windows и macOS.
Uno de los problemas con Vim que impulsó la creación de Neovim fue su base de código monolítica e inflada, que consta de más de 300 mil líneas de código C (C89). Solo unas pocas personas comprenden todos los matices del código base de Vim y todos los cambios están controlados por un responsable, lo que dificulta el mantenimiento y la mejora del editor. En lugar del código integrado en el núcleo de Vim para admitir la GUI, Neovim propone utilizar una capa universal que le permite crear interfaces utilizando varios kits de herramientas.
Los complementos para Neovim se inician como procesos separados, para la interacción con los cuales se utiliza el formato MessagePack. La interacción con los complementos se realiza de forma asíncrona, sin bloquear los componentes básicos del editor. Para acceder al complemento, se puede utilizar un socket TCP, es decir. El complemento se puede ejecutar en un sistema externo. Al mismo tiempo, Neovim sigue siendo compatible con Vim, sigue siendo compatible con Vimscript (se ofrece Lua como alternativa) y admite conexiones para la mayoría de los complementos estándar de Vim. Las funciones avanzadas de Neovim se pueden utilizar en complementos creados con API específicas de Neovim.
Durante la existencia del proyecto, se han preparado más de mil complementos específicos, hay enlaces disponibles para crear complementos e implementar interfaces utilizando varios lenguajes de programación (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby ) y marcos (Qt, ncurses, Node .js, Electron, GTK). Se están desarrollando varias opciones de interfaz de usuario. Los complementos de GUI son muy parecidos a los complementos, pero a diferencia de los complementos, inician llamadas a funciones de Neovim, mientras que los complementos se llaman desde Neovim.
Entre los cambios de la nueva versión:
- De forma predeterminada, se propone un nuevo esquema de color que reduce el brillo, utiliza combinaciones de colores más equilibradas y resuelve los problemas que surgen en las personas con desviaciones en la visión del color.


- Se han cambiado las combinaciones de teclas: “K”: cuando el cliente LSP está encendido, muestra información sobre la función y la variable a la que apunta el cursor, “[d” y “]d”: navega a través de mensajes de diagnóstico, d: muestra información adicional sobre el mensaje de diagnóstico.
- Funcionalidad incorporada del complemento vim-commentary para enmarcar rápidamente líneas y bloques de código con caracteres de comentario, teniendo en cuenta el contexto (por ejemplo, para el contenido de una etiqueta будут использоваться символы «//», а для HTML — «»
- Se agregó la opción 'termsync', que habilita un modo de salida sincronizada, en el que, para eliminar el parpadeo y el desgarro en la pantalla, las actualizaciones de la interfaz se acumulan y se muestran en el terminal en una sola porción.
- La secuencia de escape "OSC 52" se utiliza para escribir en el portapapeles del sistema si el trabajo se realiza en una sesión SSH, la configuración del 'portapapeles' no está habilitada y hay un emulador de terminal que admite "OSC 52".
- Se agregó soporte experimental para formatear hipervínculos usando la secuencia de escape OSC 8. De forma predeterminada, esta función se usa para resaltar enlaces en documentos Markdown formateados como "[ejemplo](https://example.com)".

- Se proporciona detección automática de soporte de terminal para representación de color de 24 bits (“color verdadero”).
- Cuando se utiliza LSP (Language Server Protocol), las sugerencias se muestran en su lugar, en forma de texto virtual, que se muestra en un color diferente directamente en el código, pero sin agregarse realmente a los textos fuente (en la captura de pantalla, las sugerencias se muestran en gris oscuro).

- Se han ampliado las capacidades para inspeccionar el árbol de sintaxis del código fuente. Se agregó un modo interactivo para escribir consultas en el árbol de sintaxis, aplicado sobre la marcha al código actual.

- Se agregó la capacidad de especificar modificadores en el comando ":terminal", por ejemplo ":botright terminal" para abrir una nueva ventana de terminal en la parte inferior derecha de la pantalla.
Fuente: opennet.ru





