十年以后,Vim 终于发布了一个新的大版本 8.0,结束了从 2006 年 5 月 7 日开始的 7.0 世代。虽然这十年间,Vim 也一直在不断更新,从 7.0 到三年前的 7.4,每隔一两年或两三年就会有个小版本更新,但是这次跨越大版本更新,带来了不少新的特性,据说有一些是从其它的 Vi 流派吸收来的特性。

什么是 Vim?

虽然说我认为能看到这篇文章的人应该都知道 Vim 是什么,不过作为一篇正式宣告 Vim 8.0 发布的新闻,我还是郑重其事的来给 Vim 做个说明吧。

Vim 是经典的 UNIX 编辑器 Vi 的深度改良版本。它增加了许多功能,包括:多级撤销、格式高亮、命令行历史、在线帮助、拼写检查、文件名补完、块操作、脚本支持,等等。除了字符界面版本之外,它也有图形界面版本(比如 gVim)。虽然 Vi 还在继续维护当中,但是大部分人都只在使用 Vim 了,你所见到和听到的大多是指 Vim——虽然你的命令名可能是 Vi。

这个编辑器常用于程序员、系统管理员、黑客们进行编程和文本编辑。不像某些编辑器,它所有的命令都采用普通的键盘字符,因此在你的如飞般的十指之下,它的输入和操作速度非常快。当然,你也可以将功能键映射到某些命令上,甚至还可以支持鼠标。

除了 Linux 之外,Vim 还可以运行在 MS-Windows (NT、2000、XP、Vista、7、8、10)、苹果、VMS 和几乎所有的 UNIX 分支上。 Vim 的旧版本还可以运行在 MS-DOS、MS-Windows 95/98/Me、Amiga DOS、Atari MiNT、BeOS、RISC OS 和 OS/2 上,不过新版本不再支持了。

主要更新

8.0 版本中除了大量的细节改进和错误修复以外,主要支持以下的新功能:

支持异步 I/O 和 通道 channel

Vim 现在可以和后台的其它进程进行消息交互。这样就可以开发一个运行在后台的服务器,并将结果发回给 Vim,这种交互方式称之为 通道 channel 。在通道中使用 JSON 传递消息,因此你可以用任何一种语言来开发后台服务器,只需要它支持 JSON 即可。通过支持这种技术可以实现一些功能非常复杂的插件。

任务

Vim 现在也能启动一个任务,并与之通讯或停止它。比如说,可以启动一个用于自动补完、格式检查等功能的进程。在任务和 Vim 之间的通讯是通过通道完成的。

定时器

另外一个异步工作的是 定时器 timer ,可以启动一个定时器并不断重复调用某个函数。比如:let tempTimer = timer_start(4000, 'CheckTemp')

Partial

Vim 已经有了一个 Funcref 功能,这是一个函数引用。partial 也是一个函数引用,但是它可以绑定参数或字典。这对于频道或定时器的回调很有用。 比如:let tempTimer = timer_start(4000, function('CheckTemp', ['out']))

Lambda 和闭包

lambda 是创建函数最快的方式,比如:{args -> expr}。它对于 filter() 和 map() 很有用,而且还支持函数参数。如:call filter(mylist, {idx, val -> val > 20})

lambda 可以使用定义 lambda 表达式范围内的变量,这常被称之为 闭包 closure

插件包

插件越来越多了,为了更好的管理插件,因此支持了插件包的支持。

窗口 ID

以前 Vim 中的窗口只能通过数字编号来访问,当打开、关闭或移动窗口时,这个数字也随之而变。现在每个窗口都有了一个唯一的 ID,可以更方便的找到它们。

折行缩进

新增的 'breakindent' 选项可以保证在折行时维持缩进不变。

Windows:支持 DirectX

新增的 'renderoptions' 选项可以在 Windows 上切换到 DirectX (DirectWrite)引擎上。

支持 GTK+ 3

一般用户很难注意到 GTK+ 3 和 GTK+ 2 的区别。对这两者的配置仍然都支持。

更多的变化细节,可以参考这里

下载

得到最新版本的 Vim 的最好方式是使用 Git :

git clone https://github.com/vim/vim.git 

更多信息可参考: http://www.vim.org/git.php

UNIX/Linux

源代码及运行时文件: <ftp://ftp.vim.org/pub/vim/unix/vim-8.0.tar.bz2> 。

在 Linux 下,你总可以使用你的软件包管理器来安装最新的 Vim 8.0,不过如果你的发行版仓库还没有提供的新的 8.0 的话,你可以享受一下自己编译的乐趣。

如果你希望按照你自己的想法定制一个 Vim,那你可以下载源代码,并在 src 目录里面进行编译,可以参考 src/INSTALL 了解如何编译和安装。

Windows

安装程序:<ftp://ftp.vim.org/pub/vim/pc/gvim80.exe>

运行时文件: <ftp://ftp.vim.org/pub/vim/pc/vim80rt.zip>

Windows 95/98/NT/2000/XP/7 图形界面版: ftp://ftp.vim.org/pub/vim/pc/gvim80.zip

带有 OLE 支持的版本: <ftp://ftp.vim.org/pub/vim/pc/gvim80ole.zip>

Windows NT/2000/XP/7 字符界面版:<ftp://ftp.vim.org/pub/vim/pc/vim80w32.zip>

8.0 不再支持的版本

  • 16 位的 DOS、OS/2 和 Amiga 版本
  • 32 位的 MS-DOS/Windows 95/98 的字符界面版
  • 16 位的 MS-Windows 版本

文档与帮助

对于初学者来说,有一个叫 vimtutor 的一小时教程可以看看(当然是英文的),请通过 :help tutor 了解更多信息。

学习 Vim 的最好方式之一是在 Vim 中使用:help,如果你还没有 Vim 二进制程序,你也可以看看 runtime/doc/help.txt,它包含了对其它文档的指引。这个用户手册就像一本书一样,推荐使用它来学习 Vim。详见 :help user-manual

已有 19 条评论

  1. 用vim改配置文件, 用emacs写代码 —— fxbszj [Chrome 52.0|Windows 7] 发表。
  2. 昨天晚上在睡觉的时候,看见VIM发布了,我默默地想了想,等过一起星期,看更新多少版本吧。结果短短4个小时以后,发布了3次 —— Vic [Chrome 52.0|GNU/Linux] 发表。
  3. vi党来了,虽然不常用 —— vio [Chrome 52.0|Windows 10] 发表。
  4. 我只想说emacs是邪教2333333! —— 来自广东深圳的 Firefox 48.0|Ubuntu 用户 发表。
  5. 不错,这么久,感觉就像诈尸了一样! —— tracy1989wan [Chrome 51.0|GNU/Linux] 发表。
  6. 十年诈一回尸。 —— DougWang [QQ Browser 9.5|Windows 10] 发表。
  7. 没有升级的欲望啊 —— 来自浙江宁波的 Firefox 48.0|Windows 7 用户 发表。
  8. 还在探索VIM的路上,顶起。 —— 何亮 [Chrome 49.0|Windows 7] 发表。
  9. 其实 8.0 和 7.4 最后几个版本差不多——可不是突然完成了一个新的分支。 —— linux [Chrome 52.0|Mac 10.11] 发表。
  10. 好吧!刚删掉,不知为什么Archlinux下前用的好好复制粘贴,现在用不了 —— 来自云南玉溪的 Firefox 48.0|GNU/Linux 用户 发表。
  11. 不知道Uganda的孩子怎么样了? —— hello_linux [Chrome 51.0|Windows 7] 发表。
  12. shift加鼠标,还有不要用gtk2的终端 —— 来自亚太地区的 Chrome 53.0|GNU/Linux 用户 发表。
  13. 什么是“运行时文件”?这个怎么安装使用? —— 来自广东广州的 UC Browser 10.2|Android 5.0 用户 发表。
  14. When you obtain the latest version of Vim through CVS, Subversion or usethe archives and apply all the patches, you still don't have the latest versionof the runtime files (syntax highlighting, indenting, filetype plugins, etc.).That is because no patches are made for them. —— linux [Chrome 52.0|Mac 10.11] 发表。
  15. 支持directX需要设置utf-8编码格式,这有点不爽。 —— ZengYi [Firefox 48.0|Ubuntu] 发表。
  16. 为何这两个会扯到一起。。。嗯,似乎也有点道理。。 —— linux [Chrome 53.0|Mac 10.11] 发表。
  17. Emacs 25.1 is out!!!!!!! —— 来自山东青岛的 Firefox 48.0|GNU/Linux 用户 发表。
  18. windows上的emacs 25,编辑带中文的文件,那个卡啊,想死的心都有了 —— fxbszj [Chrome 52.0|Windows 7] 发表。
  19. 换了台机器,编辑中文文件也挺卡,看了下应该是中文字体没有配置好的原因。 —— 来自山东青岛的 Firefox 49.0|Windows 10 用户 发表。

添加新评论