Neovim 0.5,Vim 編輯器的現代化版本,現已推出

經過近兩年的開發,Neovim 0.5 已經發布,它是 Vim 編輯器的一個分支,專注於提高可擴展性和靈活性。 該專案已經對 Vim 程式碼庫進行了七年多的改造,其結果是簡化了程式碼維護,提供了在多個維護者之間分工的方法,將介面與基礎部分分開(介面可以是不觸及內部的情況下進行更改)並基於插件實現新的可擴展架構。 該專案的原始開發是在 Apache 2.0 許可證下分發的,基礎部分是在 Vim 許可證下分發的。

Vim 的問題之一是其臃腫、單一的程式碼庫,由超過 300 萬行 C (C89) 程式碼組成,促使 Neovim 的創建。 只有少數人了解 Vim 程式碼庫的所有細微差別,並且所有變更都由一名維護者控制,這使得編輯器的維護和改進變得困難。 Neovim 建議使用通用層,而不是內建在 Vim 核心中來支援 GUI 的程式碼,該通用層可讓您使用各種工具包建立介面。

Neovim 的插件作為單獨的進程啟動,用於使用 MessagePack 格式進行互動。 與插件的互動是非同步進行的,不會阻塞編輯器的基本元件。 要存取該插件,可以使用 TCP 套接字,即該插件可以在外部系統上運行。 同時,Neovim 仍然向後相容於 Vim,繼續支援 Vimscript(Lua 作為替代方案提供)並支援大多數標準 Vim 插件的連接。 Neovim 的進階功能可用於使用 Neovim 特定 API 建置的插件。

目前,已經準備了大約130個特定插件,可以使用各種程式語言(C++、Clojure、Perl、Python、Go、Java、Lisp、Lua、Ruby)和框架(Qt、 ncurses、Node.js、Electron、GTK )。 一些用戶介面選項正在開發中。 GUI 插件很像插件,但與插件不同的是,它們發起對 Neovim 函數的調用,而插件是從 Neovim 內部調用的。

新版本的一些變化:

  • 在Lua中新增了內建的LSP客戶端(語言伺服器協定),可用於連接外部服務進行分析和程式碼補全。
  • 新增了 API 來控制分配緩衝區的設計。
  • 新增了一個 API 以使用擴展標籤來追蹤位元組層級的變更。
  • 擴展了對 Lua 作為插件開發和配置管理語言的支援。
  • 新增了對樹守護者解析引擎的實驗支援。

來源: opennet.ru

添加評論