Vim 8.0 发布
发布日期:作者: Eric L. Barnes
The Vim 编辑器 发布了十年来的第一个主要版本,Vim 8.0。
此版本包含许多小功能、大量错误修复以及以下主要亮点
异步 I/O 支持,通道
Vim 现在可以在后台与其他进程交换消息。这使得服务器能够在后台执行工作并将结果发送回 Vim 成为可能。
与通道密切相关的是 JSON 支持。JSON 受到广泛支持,可以轻松地用于进程间通信,允许使用任何语言编写服务器。使用的函数是 |json_encode()| 和 |json_decode()|。
这使得构建使用任何语言编写并在单独进程中运行的非常复杂的插件成为可能。
作业
Vim 现在可以启动作业、与之通信并停止它。这对于运行完成进程、语法检查等非常有用。通道用于与作业通信。作业还可以从缓冲区或文件读取或写入。
计时器
计时器也是异步的。它们可以触发一次或多次,并调用函数来执行任何工作。例如
let tempTimer = timer_start(4000, 'CheckTemp')
这将在 4 秒(4000 毫秒)后调用 CheckTemp() 函数。
部分
Vim 已经有了 Funcref,一个函数的引用。部分也引用一个函数,此外还绑定参数和/或字典。这对通道和计时器的回调特别有用。例如,对于上面的计时器示例,要将参数传递给函数
let tempTimer = timer_start(4000, function('CheckTemp', ['out']))
这将在 4 秒后调用 CheckTemp(‘out’) 函数。
Lambda 和闭包
已添加创建函数的简短方法:{args -> expr}。这对诸如 filter()
和 map()
之类的函数很有用,这些函数现在也接受函数参数。示例
:call filter(mylist, {idx, val -> val > 20})
Lambda 可以使用在定义 Lambda 的作用域中定义的变量。这通常称为 |闭包|。
用户定义的函数也可以通过添加“闭包”参数成为闭包
:func-closure|
软件包
插件不断增长,而且可用的插件比以往任何时候都多。为了使插件集合易于管理,已添加了软件包支持。这是一种获取一个或多个插件、将它们放到目录中并可能对其进行更新的便捷方法。Vim 将自动加载它们,或者仅在需要时加载它们。
新式测试
这是针对 Vim 开发人员的。到目前为止,为 Vim 编写测试并不容易。Vim 8 添加了断言函数和一个用于运行测试的框架。这使得编写测试并保持其更新变得更加简单。此外,还添加了一些专门用于测试的函数。
窗口 ID
以前,窗口只能通过其编号进行访问。每次打开、关闭或移动窗口时,该编号都会发生变化。现在,每个窗口都有一个唯一的 ID,因此它们很容易找到。
Viminfo 使用时间戳
以前,存储在 viminfo 中的信息是上次 Vim 在其中写入的任何信息。现在,时间戳用于始终保留最新的项目。
使用缩进换行
已添加 ‘breakindent’ 选项,以便能够在不更改缩进量的情况下换行。
Windows:DirectX 支持
这添加了 ‘renderoptions’ 选项,以允许在 MS-Windows 上切换 DirectX(DirectWrite)支持。
GTK+ 3 支持
GTK+ 3 GUI 的工作方式与 GTK+ 2 相同,只是它们之间几乎没有明显的技术差异。如果 2 和 3 都可用,配置仍然选择 GTK+ 2。
有关此版本和升级的更多信息,请访问官方 Vim 网站。