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

После почти двух лет разработки опубликован релиз Neovim 0.5, ответвления от редактора Vim, сфокусированного на повышении расширяемости и гибкости. В рамках проекта уже более семи лет проводится переработка кодовой базы Vim, в результате которой вносятся изменения, упрощающие сопровождение кода, предоставляющие средства разделения труда между несколькими мэйнтейнерами, отделяющие интерфейс от базовой части (интерфейс можно менять не трогая внутренности) и реализующие новую расширяемую архитектуру на основе плагинов. Оригинальные наработки проекта распространяются под лицензией Apache 2.0, а базовая часть под лицензией 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, khoảng 130 plugin cụ thể đã được chuẩn bị, các ràng buộc có sẵn để tạo plugin và triển khai giao diện bằng nhiều ngôn ngữ lập trình khác nhau (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) và các framework (Qt, ncurses, Node .js, Electron, GTK). Một số tùy chọn giao diện người dùng đang được phát triển. Tiện ích bổ sung GUI rất giống với plugin, nhưng không giống như plugin, chúng khởi tạo lệnh gọi đến các chức năng Neovim, trong khi plugin được gọi từ bên trong Neovim.

Một số thay đổi trong phiên bản mới:

  • Добавлен встроенный LSP-клиент (Language Server Protocol) на языке Lua, который можно использовать для подключения к внешним сервисам для анализа и автодополнения кода.
  • Добавлен API для управления оформлением буферов выделения.
  • Добавлен API для использования расширенных меток, позволяющих отслеживать изменения на уровне отдельных байтов.
  • Расширена поддержка Lua, как языка для разработки плагинов и управления конфигурацией.
  • Добавлена экспериментальная поддержка движка разбора синтаксиса tree-sitter.

Nguồn: opennet.ru

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