Vim エディターの最新バージョンである Neovim 0.5 が利用可能になりました

約 0.5 年の開発期間を経て、拡張性と柔軟性の向上に重点を置いた Vim エディタのフォークである Neovim 2.0 がリリースされました。 プロジェクトは XNUMX 年以上にわたって Vim コード ベースを作り直してきました。その結果、コードのメンテナンスを簡素化し、複数のメンテナー間で作業を分担する手段を提供し、インターフェースをベース部分から分離する (インターフェースは内部に手を加えずに変更)、プラグインに基づいて新しい拡張可能なアーキテクチャを実装します。 プロジェクトのオリジナルの開発部分は Apache XNUMX ライセンスに基づいて配布され、基本部分は Vim ライセンスに基づいて配布されます。

Neovim の作成を促した Vim の問題の 300 つは、89 万行を超える C (CXNUMX) コードで構成される、肥大化したモノリシックなコード ベースでした。 Vim コードベースの微妙な違いをすべて理解している人はほんのわずかで、すべての変更は XNUMX 人のメンテナによって制御されているため、エディタの保守と改善が困難になっています。 Neovim は、GUI をサポートするために Vim コアに組み込まれたコードの代わりに、さまざまなツールキットを使用してインターフェイスを作成できるユニバーサル レイヤーを使用することを提案しています。

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 のサポートが拡張されました。
  • ツリーシッター解析エンジンの実験的サポートを追加しました。

出所: オープンネット.ru

コメントを追加します