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

添加评论