本文来自依云's Blog,转载请注明。
Vim 7.4 刚刚发布了!(怎么没有 Vim 7.4c d e f 了呢=w=)
主要新特性如下:
- 新的更快的正则引擎,与旧的同时存在,并且可以指定使用哪个。
- 更 pythonic 的 Python 接口。
- 位操作函数。
-
luaeval()
函数。 - 其它新增函数、部分函数功能增强。
-
自动命令部分添加了
InsertCharPre
、CompleteDone
、QuitPre
、TextChanged
和TextChangedI
事件。 - rxvt-unicode 终端的鼠标支持。
- 等等。
Python 部分的改进主要如下:
-
vim.bindeval
函数可以获得 Vim 的字典、列表或者函数对象。 -
buffer 和 window 对象以及
vim
模块添加了vars
属性,用于存取局部于缓冲区、窗口以及全局的 Vim 变量。 -
可以从
{rtp}/python2
、{rtp}/python3
、{rtp}/python
导入模块。 - 添加了新的 tabpage 对象用于操作标签页。
- Vim 错误会自动转成 Python 异常。
-
vim.buffers
改用缓冲区作为键,因此可以方便地从缓冲区号找到对应的 buffer 对象。 -
添加了类似其它解释器接口的
:pydo
和py3do
命令。 -
添加了 Vim 函数
pyeval()
和py3eval()
。其返回值会自动转换成 Vim 对象。 -
所有接受
str
对象的接口,现在能够同时接受unicode
(Python 2)或者bytes
(Python 3)对象。 -
window 对象添加了
.col
和.row
属性。 -
添加和修正了一些 Vim 添加对象的
dir()
方法。 -
vim.vvars
用于访问v:
开头的特殊变量。 -
vim.options
以及 buffer 和 window 对象的options
属于用于像字典那样存取 Vim 的全局或者局部选项。 -
vim.strwidth
函数,功能和 Vim 内建函数strwidth
一致。 - 可能有更多没有写到发行说明中的内容。
详情请: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。
Aug 10, 2013 11:33:24 PM
好耶....
Aug 11, 2013 02:19:31 AM
7.4b时就已经在用了。
可惜没有呼声最高的IDE特性。虽然作者一直表示Vim只是个编辑器,但总有像我这样的一小撮人希望能有更多IDE有的功能,集成调试模块、智能补全神马的。
Aug 11, 2013 12:09:25 PM
没人写那部分嘛。7.4 的新正则引擎是 Google 的那什么活动上有人给写的,Python 接口的增强是 ZyX 给弄的。那个正则引擎引入之后他们就一直在修 bug……
Aug 11, 2013 04:04:15 PM
还在vim入门阶段,发现这些特性貌似都没用上~~~想进阶真难啊
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 多号时不要贸然换过去 :)
Aug 11, 2013 05:06:06 PM
list 和 dict 也是支持的,不过 dict 的 key 必须是字符串。还有哦,还有一些 screen* 的函数用来取光标位置、指点位置的字符和属性,暂时没看到什么好玩的用法就是了。11 是关于 Python dir() 函数的,一般在 Python shell 中才比较有用。
我一直在用新版呢,也没遇到太大的问题(有段时间 undo 有点小问题,郁闷了下)。实在不行我还可以回滚回去。
Aug 12, 2013 03:26:23 AM
错误啊,为什么装了64位的之后运行,先是提示缺少libiconv-2.dll。解决了之后,输入:echo $VIM 却是d:\editor\vim\vim74,其实应该是d:\editor\vim呀!??这个是bug不???
Aug 12, 2013 03:28:22 AM
因为识别$VIM错误,导致不能正确加载_vimrc配置文件哪,虽然也可以拷贝到子目录vim74中去解决,不过……有点扯了吧
Aug 12, 2013 10:11:58 AM
前边那个应该是我打包时漏掉了……
后边那个,我也不知道,待会研究下……
Aug 12, 2013 07:37:26 PM
提示没有 libiconv-2.dll , 但是弹框两次后还能打开 gvim。 请问 这是怎么回事?
我下的 x64。
win7 7601 x64
Aug 12, 2013 09:54:33 PM
打包时漏掉了那个 dll……试试我重新打的包吧:http://lilydjwg.vim-cn.com/share/gvim74-x64.2.exe
Aug 12, 2013 10:28:14 PM
辛苦了, 谢谢。
之前从来没有出现过的情况: 中文乱码, 今天用了7.4 之后,居然乱码了。
我7.3的没有删除, 用7.3 打开,也会乱码。
我的vimrc 已经照网上的配置好了。
一晚上都没有查出来原因。
Aug 12, 2013 10:28:24 PM
我重新编译打包了,现在应该有 libiconv-2.dll 了,$VIM 的值也应该正确了(造成这个的原因是部分应该重新生成的目标文件 make 没有重新生成)。http://lilydjwg.vim-cn.com/share/gvim74-x64.3.exe
Aug 12, 2013 10:31:29 PM
我刚又重新编译打包了……修正了 $VIM 变量不正确的问题。请更新,文件名为 gvim74-x64.3.exe。
Aug 12, 2013 10:35:00 PM
想即时请教, 不知可否?
您有没有qq 或者其它类似的账号。
发到我邮箱里我加您可以吗?
Aug 12, 2013 10:46:05 PM
刚才发现, 把所有有关编码的设置注释掉, 中文正常显示。
不知道是怎么回事。。。
Aug 13, 2013 01:47:41 AM
直接从 mingw 那复制一个就可以了~
Aug 13, 2013 11:15:30 AM
更新以后vim支持“预编辑字符串”特性了,fcitx的光标跟随也能用了~
Aug 13, 2013 12:16:13 PM
我是从 Ruby 里复制的=w= mingw-w64 里它在单独的包里。
不过还是不知道为什么 32 位的不需要这几个 dll……
Aug 13, 2013 10:47:03 PM
辛苦!!反应这么快!不过下不来第3版,第2版可以
Aug 13, 2013 10:48:54 PM
呵呵,用迅雷下来了。多谢!!!!
Aug 16, 2013 11:17:59 PM
正则语法有变化么?没有的话还是有点不爽…… Orz
Aug 16, 2013 11:43:37 PM
有变化~添加了选择正则引擎的语法 :-D
Aug 18, 2013 08:58:20 PM
{rtp}/python3 是不是写重复了?
Aug 18, 2013 10:11:39 PM
今个重装了系统,还装的 vim 7.3。原来补丁打到 831 的,这次想着干脆给打全了,于是把余下的都下来打上,但事实证明毛手毛脚的不好,用着老出 E876 的错,看了才知道又多了一个劳什子的 regexp 引擎,文档里都说了新引擎没法支持所有 pattern,但默认还是给选上了,于是只能在 .vimrc 里加一句 set regexpengine=1。奇怪多打几个补丁怎么会出这种事,难不成新引擎是从 7.3 里就有了?看来开发者有拿用户当小白鼠的倾向,想默认让人用才能多发现漏洞吧,却苦了我这菜鸟了。
Aug 18, 2013 11:45:27 PM
默认是自动选择正则引擎的。Vim 7.3 900 多之后、7.4 之前本来就是给小白鼠用的。你为什么不用 7.4 呢?
Aug 18, 2013 11:45:57 PM
嗯,谢谢指出。是多写了个「3」。
Aug 19, 2013 12:03:09 AM
原来如此啊。可是我只要风平浪静的就好了,我怕这种惊喜 7.4 里头更多。其实这个还算好,你知道 7.3 刚出那时候,先是 py3 接口不支持中文,然后是内存泄漏,都是你搞定的。我已经是资深小白鼠,如今功成身退了罢。
Aug 19, 2013 12:12:00 AM
特别是内存泄漏那一次,颠倒找不着原因。那时学 python 也没多长时间,老觉得是自己哪写的不对。那一个问题一共耽误了个把星期吧。我不是学计算机的,底层东西都不懂。整怕了。
Aug 19, 2013 12:20:50 AM
7.4 是稳定版,不会有多少很严重的 bug 的。实际上在快到 7.3.1000 时已经特性冻结只收问题修正了。不过 7.4 只出了 a 和 b 两个测试版,补丁数也不多就是了。
Aug 19, 2013 12:32:16 AM
7.3 不也算是稳定版么[偷笑] 记得发现那问题的时候也已经出来好久了,补丁都出到 100 多号了。听你这么说,我更加怀疑我是八字相犯。拿 vim 当 UI,自己写文件浏览插件,这些兴趣就恁小众么,别人都没发现就让我发现了。看来你内幕知道得杠杠的,我以后补丁也不乱打了,打前一定先来问你 ~
Aug 19, 2013 03:02:32 AM
感谢仙子的贡献,我还是请求能给编译一个不带OLE特性的gvim.exe(32位)
Aug 19, 2013 10:56:11 AM
你把新正则刚开始的那些补丁打上就不稳定啦。Vim 在发布新版前会有测试版,会停止添加新特性。在其它时间就没这么好了,而这次刚好赶上这么大的修改,所以中间很多补丁版本都是有不少 bug 的。
你可以加入 vim_dev 邮件列表来关注他们都在干什么=w=
Aug 19, 2013 09:53:56 PM
已经将 gvim.exe 上传到 Wuala 和 vim-cn,你替换掉即可。
Aug 20, 2013 09:55:38 AM
我在可视模式下 调用一个 函数, 为什么会重复调用多次.
比如我 选中 5行, 该函数就会调用5次.
而我只想调用一次, 因为在函数里我已经把这5行都处理了.
依云兄有没有什么办法?
Aug 20, 2013 10:09:42 AM
依云果然速度飞快,再次感谢!!
Aug 20, 2013 10:22:48 AM
:help command-range
Aug 20, 2013 10:58:51 AM
Ex 命令总是以行作为处理对象的
Aug 20, 2013 01:27:17 PM
搞定了,谢谢指点.
还有个问题:
我 set vb t_vb=
为什么在gvim 下, 闪的很厉害呢.
我设置地 h 到最左边缘的时候不能向上一行换行, 然后一直按h的时候, 就会闪.
Aug 20, 2013 01:45:57 PM
au VimEnter * set vb t_vb=
用这个方法 暂时解决了..
Aug 24, 2013 01:30:43 PM
插件式实现,我在搞。我已经搞出一个够用的了,只是补全引擎和代码导航引擎需要一个更好的,有现成的吗(天朝人哪有这么多时间从零写一个)? http://www.vim.org/scripts/script.php?script_id=4599
Sep 09, 2013 02:52:37 PM
Orz 原来是我没了解好那些 magic, very magic 的正则……