Phát hành Neovim 0.7.0, phiên bản hiện đại hóa của trình soạn thảo Vim

Neovim 0.7.0 đã được phát hành, một nhánh của trình soạn thảo Vim tập trung vào việc tăng khả năng mở rộng và tính linh hoạt. Dự án đã làm lại cơ sở mã Vim trong hơn bảy năm, do đó những thay đổi được thực hiện giúp đơn giản hóa việc bảo trì mã, cung cấp phương tiện phân công lao động giữa một số người bảo trì, tách giao diện khỏi phần cơ sở (giao diện có thể được đã thay đổi mà không cần chạm vào phần bên trong) và triển khai kiến ​​trúc có thể mở rộng mới dựa trên các plugin. Các phát triển ban đầu của dự án được phân phối theo giấy phép Apache 2.0 và phần cơ bản được phân phối theo giấy phép Vim. Các tập hợp làm sẵn được chuẩn bị cho Linux (appimage), Windows và macOS.

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.

В новой версии предложена начальная поддержка удалённой работы, позволяющая запустить Neovim на сервере и подключаться к нему с клиентской системы, используя отдельный ui_client. Среди других изменений: прекращена поддержка Python 2, разрешено использовании Lua-функций в keymap, добавлены новые команды в API, значительно расширены возможности по использованию языка Lua для разработки плагинов и управления конфигурацией, улучшены средства диагностики проблем в коде, добавлена поддержка глобальной строки состояния, проведены оптимизации производительности. Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы.

Nguồn: opennet.ru

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