解决Vim"UltiSnips requires py >= 2.7 or py3"

由于UltiSnips依赖于Python,所以有时候你安装完UltiSnips再重新打开Vim时会弹出一个窗口提示”UltiSnips requires py >= 2.7 or py3”,出现这种情况的原因主要有两种,一种是Vim本身不支持Python,这种情况下你需要重新编译Vim打开对Python的支持,一般来说你从包管理器和官网获取的Vim都是支持Python,另外一种情况就是Vim使用的Python版本和你系统安装的Python版本不匹配,这也是本文的重点,这种情况多发生在Windows上,因为Linux上你从包管理器中安装的Vim和Python是严格匹配的,而在Windows上即使你是从官网下载的Vim而且有+python/dyn和+python3/dyn仍然可能提示你”UltiSnips requires py >= 2.7 or py3”,原因就是你安装的Python和Vim不匹配,因为Windows下Vim只有32位而Python既有32位也有64位,当你安装的是64位的Python时就会出现上面的情况。下面介绍两种解决方案

使用vim-snipmate替代UltiSnips

vim-snipmate和UltiSnips一样能提供代码片段补全功能,而且它们也都依赖于vim-snippets提供的代码片段。相较于UltiSnips,它不需要Python的支持,安装完成以后直接就能通过就能进行补全,不过它依赖于vim-addon-mw-utils和tlib。
如果你使用的是Vundle管理器,可以在vimrc中写入

Plugin ‘MarcWeber/vim-addon-mw-utils’
Plugin ‘tomtom/tlib_vim’
Plugin ‘garbas/vim-snipmate’

保存并退出后,重新打开Vim并执行:PluginInstall
如果你使用的是Pathogen,依次执行下列指令即可

% cd ~/.vim/bundle
% git clone https://github.com/tomtom/tlib_vim.git
% git clone https://github.com/MarcWeber/vim-addon-mw-utils.git
% git clone https://github.com/garbas/vim-snipmate.git

更换Python版本

就像上面提到的Vim和Python版本必须严格匹配,因此卸载掉64位的Python然后重新安装32位的就可以了,这里推荐使用Python2,因为vim-autoformat和YouCompleteMe都是在Python2下工作得比较正常,这样就又能继续在ycm的补全中调用UltiSnips了。

你可能感兴趣的:(Vim)