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

Neovim 0.6.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.

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

  • Hỗ trợ cho các biến cục bộ đã được thêm vào tập lệnh vim, phạm vi của nó chỉ bị giới hạn bởi tập lệnh hiện tại.
  • Hỗ trợ ngôn ngữ Lua được cải thiện đáng kể để phát triển plugin và quản lý cấu hình. Trong tập lệnh vim, khả năng gọi các hàm Lua dưới dạng phương thức đã được thêm bằng cách chỉ định tiền tố v:lua (ví dụ: “arg1->v:lua.somemod.func(arg2)”).
  • Các khả năng của máy khách LSP tích hợp (Giao thức máy chủ ngôn ngữ) đã được mở rộng, có thể được sử dụng để chuyển logic phân tích và hoàn thành mã sang các máy chủ bên ngoài. Việc sử dụng LSP cho phép bạn sử dụng hơn 150 trình xử lý làm sẵn cho các ngôn ngữ lập trình khác nhau được chuẩn bị cho trình soạn thảo Visual Studio Code.
  • Các công cụ cải tiến để chẩn đoán sự cố trong mã. Đã thêm khả năng hiển thị văn bản của thông báo chẩn đoán và cửa sổ nổi với mã được liên kết với các thông báo đó. Việc xử lý các thông báo chẩn đoán được truyền bởi máy chủ LSP được cung cấp.
  • Đã thêm hỗ trợ cho các chuỗi ảo, ví dụ: có thể được sử dụng để hiển thị các khối có thông tin dịch vụ.
  • Nhiều tối ưu hóa hiệu suất khác nhau đã được thực hiện, ví dụ: bảng băm được bật cho tên nhóm được đánh dấu.
  • Hỗ trợ dành cho Windows 7 và các bản dựng Windows 32 bit đã bị ngừng.

Nguồn: opennet.ru

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