8
10
2013
42

Vim 7.4 发布

本文来自依云's Blog,转载请注明。

Vim 7.4 刚刚发布了!(怎么没有 Vim 7.4c d e f 了呢=w=)

主要新特性如下:

  1. 新的更快的正则引擎,与旧的同时存在,并且可以指定使用哪个。
  2. 更 pythonic 的 Python 接口。
  3. 位操作函数。
  4. luaeval() 函数。
  5. 其它新增函数、部分函数功能增强。
  6. 自动命令部分添加了InsertCharPreCompleteDoneQuitPreTextChangedTextChangedI事件。
  7. rxvt-unicode 终端的鼠标支持。
  8. 等等。

Python 部分的改进主要如下:

  1. vim.bindeval函数可以获得 Vim 的字典、列表或者函数对象。
  2. buffer 和 window 对象以及vim模块添加了vars属性,用于存取局部于缓冲区、窗口以及全局的 Vim 变量。
  3. 可以从{rtp}/python2{rtp}/python3{rtp}/python导入模块。
  4. 添加了新的 tabpage 对象用于操作标签页。
  5. Vim 错误会自动转成 Python 异常。
  6. vim.buffers改用缓冲区作为键,因此可以方便地从缓冲区号找到对应的 buffer 对象。
  7. 添加了类似其它解释器接口的:pydopy3do命令。
  8. 添加了 Vim 函数pyeval()py3eval()。其返回值会自动转换成 Vim 对象。
  9. 所有接受str对象的接口,现在能够同时接受unicode(Python 2)或者bytes(Python 3)对象。
  10. window 对象添加了 .col.row 属性。
  11. 添加和修正了一些 Vim 添加对象的dir()方法。
  12. vim.vvars用于访问v:开头的特殊变量。
  13. vim.options以及 buffer 和 window 对象的options属于用于像字典那样存取 Vim 的全局或者局部选项。
  14. vim.strwidth函数,功能和 Vim 内建函数strwidth一致。
  15. 可能有更多没有写到发行说明中的内容。

详情请:help version-7.4

附:我编译的 Windows 32 位和 64 位版本: http://lilydjwg.is-programmer.com/pages/19540.html#win-vim

我维护的 Arch Linux lilydjwg 仓库也有 64 位的 gvim 和 vim。

2014年12月2日更新:现在我打包的 Vim 在 Arch Linux 中文社区源里了,名字叫 vim-runtime-lily、gvim-lily 以及 vim-lily。

Category: Vim | Tags: vim python | Read Count: 15399
jiazhoulvke 说:
Aug 11, 2013 02:19:31 AM

7.4b时就已经在用了。
可惜没有呼声最高的IDE特性。虽然作者一直表示Vim只是个编辑器,但总有像我这样的一小撮人希望能有更多IDE有的功能,集成调试模块、智能补全神马的。

Avatar_small
依云 说:
Aug 11, 2013 12:09:25 PM

没人写那部分嘛。7.4 的新正则引擎是 Google 的那什么活动上有人给写的,Python 接口的增强是 ZyX 给弄的。那个正则引擎引入之后他们就一直在修 bug……

mapleray 说:
Aug 11, 2013 04:04:15 PM

还在vim入门阶段,发现这些特性貌似都没用上~~~想进阶真难啊

Avatar_small
Jacky Liu 说:
Aug 11, 2013 04:48:54 PM

仔细看了一遍。python 部分最大的亮点是 8。原有的 Py 接口最大的局限就是交流是单向的。py 部分获取 vim 的值容易,vim 获取 py 的值很难。有了 8 应该是大改善。不知道是否只能返回 str 和 int 一类简单对象,如果能返回 list 和 dict 最好了。

其次是 10,.col 特性使文本由一维对象变成了二维对象,这样可以很方便地做一个基于列的 UI,这可是之前 Vim 本身也不具有的特性呀,不过不知道是不是像我想的这样。

另外 11 看不明白什么意思,其他的没有啥,就是增加方便性而已。

有空编译一个 7.4 先试试。不过根据 7.3 那时候的经验,还是得谨慎些,不等补丁出到 100 多号时不要贸然换过去 :)

Avatar_small
依云 说:
Aug 11, 2013 05:06:06 PM

list 和 dict 也是支持的,不过 dict 的 key 必须是字符串。还有哦,还有一些 screen* 的函数用来取光标位置、指点位置的字符和属性,暂时没看到什么好玩的用法就是了。11 是关于 Python dir() 函数的,一般在 Python shell 中才比较有用。

我一直在用新版呢,也没遇到太大的问题(有段时间 undo 有点小问题,郁闷了下)。实在不行我还可以回滚回去。

error 说:
Aug 12, 2013 03:26:23 AM

错误啊,为什么装了64位的之后运行,先是提示缺少libiconv-2.dll。解决了之后,输入:echo $VIM 却是d:\editor\vim\vim74,其实应该是d:\editor\vim呀!??这个是bug不???

error 说:
Aug 12, 2013 03:28:22 AM

因为识别$VIM错误,导致不能正确加载_vimrc配置文件哪,虽然也可以拷贝到子目录vim74中去解决,不过……有点扯了吧

Avatar_small
依云 说:
Aug 12, 2013 10:11:58 AM

前边那个应该是我打包时漏掉了……
后边那个,我也不知道,待会研究下……

ss 说:
Aug 12, 2013 07:37:26 PM

提示没有 libiconv-2.dll , 但是弹框两次后还能打开 gvim。 请问 这是怎么回事?
我下的 x64。

win7 7601 x64

Avatar_small
依云 说:
Aug 12, 2013 09:54:33 PM

打包时漏掉了那个 dll……试试我重新打的包吧:http://lilydjwg.vim-cn.com/share/gvim74-x64.2.exe

ss 说:
Aug 12, 2013 10:28:14 PM

辛苦了, 谢谢。
之前从来没有出现过的情况: 中文乱码, 今天用了7.4 之后,居然乱码了。
我7.3的没有删除, 用7.3 打开,也会乱码。

我的vimrc 已经照网上的配置好了。
一晚上都没有查出来原因。

Avatar_small
依云 说:
Aug 12, 2013 10:28:24 PM

我重新编译打包了,现在应该有 libiconv-2.dll 了,$VIM 的值也应该正确了(造成这个的原因是部分应该重新生成的目标文件 make 没有重新生成)。http://lilydjwg.vim-cn.com/share/gvim74-x64.3.exe

Avatar_small
依云 说:
Aug 12, 2013 10:31:29 PM

我刚又重新编译打包了……修正了 $VIM 变量不正确的问题。请更新,文件名为 gvim74-x64.3.exe。

ss 说:
Aug 12, 2013 10:35:00 PM

想即时请教, 不知可否?
您有没有qq 或者其它类似的账号。
发到我邮箱里我加您可以吗?

ss 说:
Aug 12, 2013 10:46:05 PM

刚才发现, 把所有有关编码的设置注释掉, 中文正常显示。
不知道是怎么回事。。。

zkc 说:
Aug 13, 2013 01:47:41 AM

直接从 mingw 那复制一个就可以了~

HeYSH 说:
Aug 13, 2013 11:15:30 AM

更新以后vim支持“预编辑字符串”特性了,fcitx的光标跟随也能用了~

Avatar_small
依云 说:
Aug 13, 2013 12:16:13 PM

我是从 Ruby 里复制的=w= mingw-w64 里它在单独的包里。
不过还是不知道为什么 32 位的不需要这几个 dll……

error 说:
Aug 13, 2013 10:47:03 PM

辛苦!!反应这么快!不过下不来第3版,第2版可以

error 说:
Aug 13, 2013 10:48:54 PM

呵呵,用迅雷下来了。多谢!!!!

Avatar_small
λ 说:
Aug 16, 2013 11:17:59 PM

正则语法有变化么?没有的话还是有点不爽…… Orz

Avatar_small
依云 说:
Aug 16, 2013 11:43:37 PM

有变化~添加了选择正则引擎的语法 :-D

anjianshi 说:
Aug 18, 2013 08:58:20 PM

{rtp}/python3 是不是写重复了?

Avatar_small
Jacky Liu 说:
Aug 18, 2013 10:11:39 PM

今个重装了系统,还装的 vim 7.3。原来补丁打到 831 的,这次想着干脆给打全了,于是把余下的都下来打上,但事实证明毛手毛脚的不好,用着老出 E876 的错,看了才知道又多了一个劳什子的 regexp 引擎,文档里都说了新引擎没法支持所有 pattern,但默认还是给选上了,于是只能在 .vimrc 里加一句 set regexpengine=1。奇怪多打几个补丁怎么会出这种事,难不成新引擎是从 7.3 里就有了?看来开发者有拿用户当小白鼠的倾向,想默认让人用才能多发现漏洞吧,却苦了我这菜鸟了。

Avatar_small
依云 说:
Aug 18, 2013 11:45:27 PM

默认是自动选择正则引擎的。Vim 7.3 900 多之后、7.4 之前本来就是给小白鼠用的。你为什么不用 7.4 呢?

Avatar_small
依云 说:
Aug 18, 2013 11:45:57 PM

嗯,谢谢指出。是多写了个「3」。

Avatar_small
Jacky Liu 说:
Aug 19, 2013 12:03:09 AM

原来如此啊。可是我只要风平浪静的就好了,我怕这种惊喜 7.4 里头更多。其实这个还算好,你知道 7.3 刚出那时候,先是 py3 接口不支持中文,然后是内存泄漏,都是你搞定的。我已经是资深小白鼠,如今功成身退了罢。

Avatar_small
Jacky Liu 说:
Aug 19, 2013 12:12:00 AM

特别是内存泄漏那一次,颠倒找不着原因。那时学 python 也没多长时间,老觉得是自己哪写的不对。那一个问题一共耽误了个把星期吧。我不是学计算机的,底层东西都不懂。整怕了。

Avatar_small
依云 说:
Aug 19, 2013 12:20:50 AM

7.4 是稳定版,不会有多少很严重的 bug 的。实际上在快到 7.3.1000 时已经特性冻结只收问题修正了。不过 7.4 只出了 a 和 b 两个测试版,补丁数也不多就是了。

Avatar_small
Jacky Liu 说:
Aug 19, 2013 12:32:16 AM

7.3 不也算是稳定版么[偷笑] 记得发现那问题的时候也已经出来好久了,补丁都出到 100 多号了。听你这么说,我更加怀疑我是八字相犯。拿 vim 当 UI,自己写文件浏览插件,这些兴趣就恁小众么,别人都没发现就让我发现了。看来你内幕知道得杠杠的,我以后补丁也不乱打了,打前一定先来问你 ~

Arch坛友 说:
Aug 19, 2013 03:02:32 AM

感谢仙子的贡献,我还是请求能给编译一个不带OLE特性的gvim.exe(32位)

Avatar_small
依云 说:
Aug 19, 2013 10:56:11 AM

你把新正则刚开始的那些补丁打上就不稳定啦。Vim 在发布新版前会有测试版,会停止添加新特性。在其它时间就没这么好了,而这次刚好赶上这么大的修改,所以中间很多补丁版本都是有不少 bug 的。

你可以加入 vim_dev 邮件列表来关注他们都在干什么=w=

Avatar_small
依云 说:
Aug 19, 2013 09:53:56 PM

已经将 gvim.exe 上传到 Wuala 和 vim-cn,你替换掉即可。

ss 说:
Aug 20, 2013 09:55:38 AM

我在可视模式下 调用一个 函数, 为什么会重复调用多次.
比如我 选中 5行, 该函数就会调用5次.

而我只想调用一次, 因为在函数里我已经把这5行都处理了.

依云兄有没有什么办法?

Arch坛友 说:
Aug 20, 2013 10:09:42 AM

依云果然速度飞快,再次感谢!!

Avatar_small
Jacky Liu 说:
Aug 20, 2013 10:58:51 AM

Ex 命令总是以行作为处理对象的

ss 说:
Aug 20, 2013 01:27:17 PM

搞定了,谢谢指点.

还有个问题:
我 set vb t_vb=

为什么在gvim 下, 闪的很厉害呢.
我设置地 h 到最左边缘的时候不能向上一行换行, 然后一直按h的时候, 就会闪.

ss 说:
Aug 20, 2013 01:45:57 PM

au VimEnter * set vb t_vb=

用这个方法 暂时解决了..

fanhe 说:
Aug 24, 2013 01:30:43 PM

插件式实现,我在搞。我已经搞出一个够用的了,只是补全引擎和代码导航引擎需要一个更好的,有现成的吗(天朝人哪有这么多时间从零写一个)? http://www.vim.org/scripts/script.php?script_id=4599

Avatar_small
λ 说:
Sep 09, 2013 02:52:37 PM

Orz 原来是我没了解好那些 magic, very magic 的正则……


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

| Theme: Aeros 2.0 by TheBuckmaker.com