[vim]Python编写插件学习笔记1 - 开始

0 环境

  1. Windows 11 22H2
  2. gVim82 (D:/ProgramFiles/Vim)
  3. Python311 (D:/ProgramFiles/Python311)
  4. 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,可以看到正确输出打印信息。

5 参考

  1. VIM E370: 无法加载库 msys-python3.8.dll-CSDN博客

  2. 用 Python 写 Vim 插件的套路是什么?-CSDN博客

  3. 详解如何使用Python编写vim插件-CSDN博客

  4. Writing Vim plugin in Python (candidtim.github.io)

  5. How to Write Vim Plugins with Python - DZone

相关推荐
CSND7402 天前
Ubuntu vi(vim)编辑器配置一键补全main函数
linux·c语言·ubuntu·编辑器·vim
susu10830189115 天前
vi或vim进行替换
linux·编辑器·vim
Hu_go__5 天前
vim的使用
linux·编辑器·vim
计算小屋5 天前
Vim 使用基本操作总结
编辑器·vim·excel
云计算DevOps-韩老师7 天前
【网络云计算】2024第50周-每日【2024/12/13】小测-理论-写10个Bash Shell脚本-解析
运维·网络·云计算·vim·bash·负载均衡·perl
蓝影铁哥7 天前
Linux实操篇-远程登录/Vim/开机重启
java·linux·运维·spring boot·spring·vim
大隐隐于野7 天前
vimdc
vim
让学习成为一种生活方式7 天前
常用vim命令行-linux008
编辑器·vim·excel
果汁分你一半l9 天前
day3 构造数据类型,数据结构基础
c语言·数据结构·vim
qq_3775727710 天前
vim save
linux·vim