Đã có Neovim 0.4, phiên bản hiện đại hóa của trình chỉnh sửa Vim

được phát hành giải phóng Neovim 0.4, ответвления от редактора Vim, сфокусированного на повышении расширяемости и гибкости. Оригинальные наработки проекта lây lan под лицензией Apache 2.0, а базовая часть под лицензией Vim.

В рамках проекта Neovim уже более пяти лет проводится переработка кодовой базы Vim, в результате которой вносятся изменения, упрощающие сопровождение кода, предоставляющие средства разделения труда между несколькими мэйнтейнерами, отделяющие интерфейс от базовой части (интерфейс можно менять не трогая внутренности) и реализующие новую расширяемую архитектуру на основе плагинов.

Một trong những vấn đề với Vim đã thúc đẩy việc tạo ra Neovim là cơ sở mã nguyên khối, cồng kềnh của nó, bao gồm hơn 300 nghìn dòng mã C (C89). Chỉ một số ít người hiểu được tất cả các sắc thái của cơ sở mã Vim và tất cả các thay đổi đều được kiểm soát bởi một người bảo trì, điều này gây khó khăn cho việc duy trì và cải thiện trình soạn thảo. Thay vì mã được tích hợp trong lõi Vim để hỗ trợ GUI, Neovim đề xuất sử dụng một lớp phổ quát cho phép bạn tạo giao diện bằng nhiều bộ công cụ khác nhau.

Các plugin dành cho Neovim được khởi chạy dưới dạng các quy trình riêng biệt để tương tác với định dạng MessagePack được sử dụng. Tương tác với các plugin được thực hiện không đồng bộ mà không chặn các thành phần cơ bản của trình chỉnh sửa. Để truy cập plugin, có thể sử dụng ổ cắm TCP, tức là. plugin có thể chạy trên hệ thống bên ngoài. Đồng thời, Neovim vẫn tương thích ngược với Vim, tiếp tục hỗ trợ Vimscript (Lua được cung cấp dưới dạng thay thế) và hỗ trợ kết nối cho hầu hết các plugin Vim tiêu chuẩn. Các tính năng nâng cao của Neovim có thể được sử dụng trong các plugin được xây dựng bằng API dành riêng cho Neovim.

Hiện tại chuẩn bị около 80 специфичных плагинов, доступны биндинги для создания плагинов и реализаций интерфейсов с использованием различных языков программирования (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) и фреймворков (Qt5, ncurses, Node.js, Electron, GTK+). Развивается несколько вариантов пользовательского интерфейса. GUI-надстройки во многом напоминают плагины, но, в отличие от плагинов, они инициируют вызов функций Neovim, в то время как плагины вызываются из Neovim.

Некоторые из изменений в phiên bản mới:

  • Добавлена большая порция новых функций API и событий интерфейса пользователя.
  • Добавлена новая стандартная библиотека Nvim-Lua для разработки плагинов на языке Lua.
  • Продолжено развитие протокола пользовательского интерфейса, выполняющего обновление информации на экране на уровне строк, а не отдельных символов.
  • Добавлена поддержка полноценных плавающих окон, которые могут размещаться в произвольном месте, прикрепляться, связываться с отдельными буферами редактирования, группироваться в режиме Multigrid.
  • Добавлена опция ‘pumblend’ для полупрозрачных выпадающих меню.

Nguồn: opennet.ru

Thêm một lời nhận xét