Vim 9.0 正式发布


将 Vim 9.0 版本献给 Sven Guckes,他于 2022 年 2 月去世。Sven 是 Vim 的核心维护者,他注册了 vim.org 域名并创建了第一个 Vim 网站,我们将以此纪念他。

经过多年的逐步改进,Vim 现在推出了一个重要版本,向前迈出了一大步。除了许多小的补充改进之外,该版本的重点是 Vim 脚本语言的一个新的变化:Vim9 Script。

上一个版本是 2019 年 12 月发布的 8.2 版。由于最新的源代码总是会在 GitHub 上提供,因此许多用户已经安装了后来的补丁版本(有超过 5000 个),这些变化也已经被许多用户试用过了。在 8.2 的基础上,许多错误得到了修复、安全问题得到了解决,代码覆盖率得到了极大的提升。这个版本比以前的任何版本都更可靠。

Vim9 Script

Vim 的脚本随着时间的推移而不断发展,同时保留了向后的兼容性。这意味着过去的错误选择往往无法改变,与 Vi 的兼容性也限制了可能的解决方案。因此执行速度相当慢,每次执行时都要对每一行进行解析。

Vim9 Script 的主要目标是极大地提高性能。这是通过将命令编译成可以有效执行的指令来实现的,执行速度有望提高 10 到 100 倍。

Vim9 Script 的次要目标是避免 Vim 特有的结构,使其更接近于常用的编程语言,如 JavaScript、TypeScript 和 Java。

性能的提高只能通过不 100% 向后兼容来实现。例如,通过创建一个 "a: " 字典使函数参数可用涉及到相当多的开销,在 Vim9 函数中,这个字典不再可用。

对于那些有大量传统脚本的开发者来说也不用过于担心,这些脚本依然可以像以前一样使用。目前没有计划放弃对传统脚本的支持,变化不会像 Python 2 到 Python 3 那样剧烈。

有趣的功能

为了从加速中获益,一个函数必须用 def 来定义,必须指定参数和返回类型。这不仅是为了使执行速度更快,也有助于在函数被编译成字节码时及早发现错误。变量需要用 var 来声明的,并且也有一个类型,可以是明确的,也可以是从分配的值中推断出来的。

行的延续不需要使用反斜杠,这是在传统脚本中使用的机制。

函数调用不需要 call,赋值不需要 let,表达式的求值不需要 eval。这使得 Vim9 Script 看起来更像大多数编程语言。

将一个大的脚本分割成小块如今也变得简单多了。在一个脚本中, export 被用来使特定的函数和变量对其他脚本可用,然后在需要使用导出的项目的地方使用 import。结合自动加载机制,这为实现大型插件带来了一种灵活而强大的方式。

现在注释以 # 开头。以前的双引号语法来自古老的 Vi,会干扰字符串的使用。在许多其他语言中,例如 Python 和 shell 脚本,都知道 # 的含义。

未来的工作

在 Vim9 Script 的计划之一是添加类,虽然可以用字典来模拟,但这还远远不够理想。大多数程序员都熟悉类,在 Vim9 Script 中也应该加入这样的东西,目前关键字已经被保留。

更多详情可查看:https://www.vim.org/vim90.php


相關推薦

2022-02-23

永无止境的热情给他留下了深刻印象。所以 Bram 想把即将发布的 Vim 9.0 献给 Sven,以作纪念。 ▲ Sven Guckes 摆出「Vim」手势 除了推广 Vim,Sven 还积极参与了许多其他的自由软件项目(例如 Vi 和 Mutt),并在公开场合发

2023-04-10

Neovim v0.9.0 已发布。 主要变化: 为 lua2dox.lua 添加对@generic的支持 为 lua2dox 添加对可选参数的支持 为 lua2dox 添加对指定类型的支持 在介绍中提及 ":help news" #20674 支持使用 ":write ++p" 创建父级目录 #20835 添加 vim.secure

2024-01-19

Wine 9.0 稳定版已正式发布。 Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。它不是像虚拟机或者模拟器一样模仿内部的 Windows 逻

2023-08-12

等。 其他的计划还包括: 处理当前积压的工作后,发布 Vim 9.1 未来让 Vim 变得更现代(类似 Neovim 的做法) 接管 Vim 所有邮件列表的管理和访问权限 暂时无法访问 Vim FTP 主服务器,正在接触 Bram 的家人是否知道凭证

2022-07-07

面向 Intel-64、AMD-64 (x86_64) 和 Arm (aarch64) 的 Oracle Linux 9 已正式发布,作为 Oracle 的 RHEL 9 的分支。 Oracle Linux 9.0 在镜像中使用的内核版本包括 Unbreakable Enterprise Kernel Release 7 (UEK R7) 以及 Red Hat Compatible Kernel (RHCK)。 带有 UEK R7 的 Orac

2023-08-07

所以名字也是 Vi IMitation(模拟)的简称。 Bram 在 1991 年发布了第一个版本;1992 年,1.22 版本的 Vim 被移植到了 UNIX 和 MS-DOS 上。从那个时候开始,随着功能的不断增加,Vim 的全名就变成 Vi IMproved(改进)。 Vim 是目前最受欢迎

2022-07-06

SpaceVim 2.0 发布了。SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全, 语法检查、格式化、调试、REPL 等特

2022-04-11

;> Neovim 0.7 目前正处于稳定化阶段,预计在 4 月 15 日发布。 主要变化 新增 lua 自动命令 新增 lua keymap API 新增 lua 命令 API 支持全局命名空间 lua 高亮(纯 lua 配色方案) 全局 statusline 支持通过nvim_buf_set_extmark

2022-10-04

Neovim v0.8.0 已发布。 主要特性变化 runtime: Enable filetype.lua by default (#19216) Add undo! Add "prerelease" to version dict Click support for 'statusline', 'winbar' #18650 Add preview functionality to user commands allow Cmdheight=0 (EXPERIMENTAL) #16251

2022-06-16

Grafana 9.0 的主要重点是改善 Grafana 的用户体验,使可观察性和数据可视化更易用也更容易获得。无论是通过 Prometheus 和 Loki 可视化查询生成器还是面板和仪表板搜索功能,Grafana 9.0 都引入了更新的工作流程,使发现和调查数据变

2022-12-20

双因素认证、加密密码管理器、安全删除)。 PeaZip 9.0 正式发布,该版本更新内容如下: 后端: Pea 1.11 代码 修复、清理遗留的代码 改进了进度条 改进了速度和内存的使用 打开 25 万个项目的归档文件时,内存

2022-12-23

该版本维护期至 2026 年 8 月。 在Debian 11 版 于 2021 年 8 月正式发布后,Debian 官方将维护三年至 2024 年 8 月 ,随后 Debian 的 LTS 团队将再继续维护两年。 LTS 维护相关情况,请参阅:https://wiki.debian.org/LTS 铜豌豆 Linux 11 版本系列,

2022-07-15

期的联合创始人 Rocky McGaugh 致敬。 Rocky Linux 9.0 于今天正式发布,该版本基于 Red Hat Enterprise Linux 9,值得关注的更新内容包括: 桌面环境 Rocky Linux 9 将 GNOME 40 作为默认的桌面环境。重新设计的核心应用程序、设置和用户界面

2023-03-14

 Git 项目发布了 Git 2.40 版本,其中包含超过 88 个贡献者的功能和错误修复,其中 30 个是新贡献者。 以下为该版本部分新功能介绍: 在 Git 2.40 中,除了 Vim 之外, git jump 现在还支持 Emacs,允许使用 git jump 将位置列表填