Windows 10下32位Vim控制台版无Python支持,GVim为何有?
这种情况在Windows环境下其实挺常见的,主要和Vim的编译方式、安装包的组件差异有关,下面给你拆解几个核心原因:
1. 编译配置差异
GVim和控制台版Vim(通常叫vim.exe)很多时候是分开编译的。不少Windows版Vim的编译脚本里,会给GVim加上Python支持的编译选项(比如--enable-pythoninterp和--enable-python3interp),但控制台版可能被配置成轻量化编译,省略了这些Python相关的编译开关。毕竟有些用户只需要控制台Vim做简单编辑,不需要脚本支持,这样能减小程序体积。
你可以验证这一点:在GVim里运行:version,找+python/dyn、+python3/dyn这类标记;再在控制台Vim里运行:version,如果看到的是-python、-python3,就说明编译时根本没加Python支持。
2. 安装包的组件选择
如果你是通过官方安装程序或者第三方发行版(比如Vim for Windows)安装的,安装过程中可能有组件选择环节,默认只给GVim勾选了Python支持组件,而控制台Vim没选。有些安装包会把带Python支持的控制台Vim作为可选组件,需要手动勾选才能安装。
3. DLL加载的环境差异(可能性较低)
虽然你装的都是32位版本,但控制台进程的环境变量可能和GVim的运行环境有细微差别。比如Python的DLL文件(python27.dll、python3x.dll)所在路径有没有被控制台进程识别到?不过既然GVim能正常加载,这个概率比较小,但也可以排查一下:打开控制台,运行echo %PATH%,看看Python的安装目录(比如C:\Python27、C:\Python38-32)有没有在PATH里。
解决办法
- 如果是编译问题,你可以下载带Python支持的控制台Vim版本,比如官方的full版安装包,或者第三方预编译的包含Python支持的
vim.exe; - 如果你有编译能力,也可以自己从源码编译Vim,编译时加上
--enable-pythoninterp=dynamic和--enable-python3interp=dynamic选项,同时指定Python的安装路径; - 检查安装包的组件,重新安装时确保控制台Vim的Python支持组件被勾选。
内容的提问来源于stack exchange,提问作者Mussé Redi

