0 环境
- Windows 11 22H2
- gVim82 (D:/ProgramFiles/Vim)
- Python311 (D:/ProgramFiles/Python311)
- Vundle v0.10.2
1 Vim 支持 Python
gVim82 默认配置中,使用的是 Python3.8。
但我的环境安装的是 Python3.11,且不是安装在默认路径下。虽然添加了 PATH 环境变量,但 vim 对加载 Python 仍可能有问题。
测试步骤:
- 打开 vim
- 输入命令:
:py3 print("hello")
,回车 - 正常情况:在命令行打印 hello
- 错误情况:E370:无法加载库 python3.8.dll
解决 "无法加载库 python3.8.dll" 问题:
修改 vim 配置文件,添加如下配置:
shell
set pythonthreedll=D:/ProgramFiles/Python311/Python311.dll
之后再进行以上测试,一切正常。
2 创建插件
vim 插件管理使用的是 Vundle,所以同样将新建的插件放到 Vundle 管理插件的目录: .vim/bundle/vim-test
- 目录组成
shell
vim-test
|- README.md
\- plugin
|- test.vim
\- test.py
- 测试插件内容
shell
" test.vim # 默认 vimscript 注释使用 "
function! TestVim() # vimscript 函数定义,函数名必须以大写字母开头
python3 << EOF # Python 嵌入式代码开头
# Python 嵌入代码最好在行内顶格,避免 Tab 问题
# python part start # Python 嵌入代码注释使用 #
print("TestVim say hello!") # Python3 代码
# python part end
EOF # Python 代码结束
endfunction # vimscript 函数定义结束
- 手动加载
shell
:source %
# 或者使用命令缩写
:so %
- 运行测试
shell
:call TestVim() # 注意:必须带括号,即使没有参数
正常情况,可以在命令行中看到打印消息:TestVim say hello!
3 自动加载插件
创建好的插件,不可能总是手动加载,需要配置 vim 自动加载。
由于使用 Vundle 管理插件,对应配置也放到 Vundle 部分。
- 修改配置
修改 .vimrc 或 _vimrc 配置文件:(具体配置不是本文内容,故不详述)
shell
call vundle#begin('$VIM/.vim/bundle')
"...
Plugin 'file:///D/ProgramFiles/Vim/.vim/bundle/vim-test'
"...
call vundle#end()
注意:这里添加了本地全路径,意为 Vundle 从本地源安装插件。
补充说明:
根据网上内容,这样配置 Vundle 可以从本地源安装 vim 插件。但是在使用
:PluginInstall vim-test
命令进行安装时,却会出错。具体原因未深究。
但是,测试发现,只要这样添加上配置,vim 就会自动加载插件, 只不过无法使用 Vundle 管理。而 Vundle 管理,最多的就是更新插件,但这个插件是我自己写在本地的,只要修改就更新了,不存在 Vundle 管理更新的问题。
- 测试自动加载
打开 vim,测试命令::call TestVim()
,可以看到正确输出打印信息。
4 命令与快捷键使用配置
通常我们使用插件,要么是使用快捷键,要么是使用命令。
- 修改配置
注意:此配置也可以添加在 test.vim 末尾,vim 自动加载插件时,这些配置同样会生效。
shell
" vim-test {{{{{{{{{{
command! TestVim call TestVim() # 命令配置
nnoremap Q :TestVim<CR> # 快捷键配置
" }}}}}}}}}} End of vim-test
- 测试
重启 vim 以加载新的配置。可以分别测试使用命令::TestVim
或输入快捷键 Q
,可以看到正确输出打印信息。