说说vim

用vim也有很长一段时间了,这里说说我对vim的一些见解吧。

近两年出现了一些vim插件管理的方案,比如

但是做得还不够,这里可以对比看看PHP近几年的发展,我们需要 Composer 这样的包管理器,和 Packagist 这样的检索网站,vimpusher 是个不错的尝试,另外还需要像 clojure-toolbox 这样的网站,vim官方的那个太不好用了就那么几个分类。

再说说vimscript,我想还是有许多像我一样的人不喜欢它的语法,不过有一些人用它写出了很复杂的插件,比如 unitectrlp,我唯一认真阅读过的vim插件源码 lusty 是用ruby写的,我自己后来学着用lua重写了一个,算是了解了下vim插件的编写。

最后再说说vim插件编写中的一些问题:

vim没有提供一个良好的按键捕获机制,通常都是使用map命令来实现,这样就导致了不同插件之间按键冲突,所以你需要很好地恢复覆盖掉的映射关系,这点在lusty代码中可以见到。

vim不能很好地创建一个特殊的buffer,你很容易混淆一些选项到底是局部的还是全局的,你需要巧妙地设置 b:undo_ftplugin 变量,例如 vim-markdown 中的。

vim的窗口状态保存恢复机制不是很好用。

vim没有内建的MRU支持,你需要监听 BufEnter BufDelete BufWipeout 自己做。

当然了,vim仍然是我最喜欢的编辑器。