如何在 windows 10 上的新 GVIM 8.2 安装中启用 python?

How do I enable python in my new GVIM 8.2 installation on windows 10?

我今天从 vim.org 安装了最新的 gvim。它是一个有很多选项的 'loaded' 包,cfr infra(:version 命令的输出)

我安装了 python 2.7,python27.dll 位于 c:\windows\system32。 python37.dll 和 pyhon39.dll 在 'c:\Program Files\python37' 和 'c:\Program Files\python39' 目录中可用。这三个有python dll的目录在系统路径下。

Gvim 和 Vim 在 echo has('python')echo has('python3') 命令上输出 0。

我是否必须在 .vimrc 或 .gvimrc 中添加任何内容才能激活 python?

如有任何建议和帮助,我们将不胜感激!

提前致谢,

圭多

VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Dec 15 2019 23:09:58)
MS-Windows 32-bit console version
Included patches: 1-12
Compiled by appveyor@APPVYR-WIN
Huge version without GUI.  Features included (+) or not (-):
+acl                +eval               +multi_byte_ime/dyn -tag_old_static
+arabic             +ex_extra           +multi_lang         -tag_any_white
+autocmd            +extra_search       +mzscheme/dyn       +tcl/dyn
+autochdir          -farsi              -netbeans_intg      +termguicolors
+autoservername     +file_in_path       +num64              +terminal
-balloon_eval       +find_in_path       +packages           -termresponse
+balloon_eval_term  +float              +path_extra         +textobjects
-browse             +folding            +perl/dyn           +textprop
++builtin_terms     -footer             +persistent_undo    -tgetent
+byte_offset        +gettext/dyn        +popupwin           +timers
+channel            -hangul_input       -postscript         +title
+cindent            +iconv/dyn          +printer            -toolbar
+clientserver       +insert_expand      +profile            +user_commands
+clipboard          +job                +python/dyn         +vartabs
+cmdline_compl      +jumplist           +python3/dyn        +vertsplit
+cmdline_hist       +keymap             +quickfix           +virtualedit
+cmdline_info       +lambda             +reltime            +visual
+comments           +langmap            +rightleft          +visualextra
+conceal            +libcall            +ruby/dyn           +viminfo
+cryptv             +linebreak          +scrollbind         +vreplace
+cscope             +lispindent         +signs              +vtp
+cursorbind         +listcmds           +smartindent        +wildignore
+cursorshape        +localmap           +sound              +wildmenu
+dialog_con         +lua/dyn            +spell              +windows
+diff               +menu               +startuptime        +writebackup
+digraphs           +mksession          +statusline         -xfontset
-dnd                +modify_fname       -sun_workshop       -xim
-ebcdic             +mouse              +syntax             -xpm_w32
+emacs_tags         -mouseshape         +tag_binary         -xterm_save
   system vimrc file: "$VIM\vimrc"
     user vimrc file: "$HOME\_vimrc"
 2nd user vimrc file: "$HOME\vimfiles\vimrc"
 3rd user vimrc file: "$VIM\_vimrc"
      user exrc file: "$HOME\_exrc"
  2nd user exrc file: "$VIM\_exrc"
       defaults file: "$VIMRUNTIME\defaults.vim"
Compilation: cl -c /W3 /nologo  -I. -Iproto -DHAVE_PATHDEF -DWIN32  -DFEAT_CSCOPE -DFEAT_TERMINAL -DFEAT_SOUND
-DFEAT_JOB_CHANNEL      -DWINVER=0x0501 -D_WIN32_WINNT=0x0501 /MP -DHAVE_STDINT_H /Ox /GL
-DNDEBUG /arch:IA32 /Zl /MT -DFEAT_MBYTE_IME -DDYNAMIC_IME -DDYNAMIC_ICONV -DDYNAMIC_GETTEXT
-DFEAT_TCL -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl86t.dll\" -DDYNAMIC_TCL_VER=\"8.6\" -DFEAT_LUA
-DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua53.dll\" -DFEAT_PYTHON -DDYNAMIC_PYTHON
-DDYNAMIC_PYTHON_DLL=\"python27.dll\" -DFEAT_PYTHON3 -DDYNAMIC_PYTHON3
-DDYNAMIC_PYTHON3_DLL=\"python37.dll\" -DFEAT_MZSCHEME -I "C:\Program Files (x86)\Racket\include"
-DMZ_PRECISE_GC -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libracket3m_a36fs8.dll\"
-DDYNAMIC_MZGC_DLL=\"libracket3m_a36fs8.dll\" -DFEAT_PERL -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
-DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl528.dll\" -DFEAT_RUBY -DDYNAMIC_RUBY -DDYNAMIC_RUBY_VER=24
-DDYNAMIC_RUBY_DLL=\"msvcrt-ruby240.dll\" -DFEAT_HUGE /Fd.\ObjCULYHTRZi386/ /Zi
Linking: link  /nologo /opt:ref /LTCG:STATUS oldnames.lib kernel32.lib advapi32.lib shell32.lib gdi32.lib
comdlg32.lib ole32.lib netapi32.lib uuid.lib /machine:i386   libcmt.lib  user32.lib  /nodefaultlib:lua53.lib
/STACK:8388608  /nodefaultlib:python27.lib /nodefaultlib:python37.lib   "C:\Tcl\lib\tclstub86.lib" winmm.lib
WSock32.lib /PDB:vim.pdb -debug

Windows 上 Vim 的常用包提供 32 位二进制文​​件,而 32 位二进制文​​件不能与 64 位库一起使用(这通常是我所期望的您的 Python 安装将是。)您需要 Vim 和 Python 匹配。

这里有 Vim 包的 64 位版本:github。com/vim/vim-win32-installer/releases

对于那些想要添加对 Python.

等外部语言的支持的人,明确提到了它们

一旦您拥有与您的 Python 库匹配的 64 位 Vim 二进制文件,您需要让它在您的系统中正确找到这些库。

尝试将 'pythonthreedll''pythonthreehome' 变量设置为指向您系统中的变量。

可以通过检查:version输出来检查所需的python版本。特别是,底部显示的编译标志将显示类似 -DDYNAMIC_PYTHON3_FLL=\"python37.dll\".

的内容

因此,Vim 似乎是用 python37.dll 构建的,所以让我们先试试那个版本:

set pythonthreedll=c:\Program\ Files\python37\python37.dll
set pythonthreehome=c:\Program\ Files\python37

可能这些不是您系统中的确切路径,或者 Vim 想要的设置值...请对它们进行试验,看看您是否找到了使其有效的组合。

注意需要用反斜杠转义空格,需要用两个反斜杠作为路径分隔符。该行的其他地方不应有空格(例如,= 周围)

可能可以为 Python 2.7 做类似的事情,但此时 Python 2 基本上已被弃用,所以我宁愿花时间让 Python 3 工作而不是Python 2...