• [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 配置文件,添加如下配置:

    set pythonthreedll=D:/ProgramFiles/Python311/Python311.dll
    
    • 1

    之后再进行以上测试,一切正常。

    2 创建插件

    vim 插件管理使用的是 Vundle,所以同样将新建的插件放到 Vundle 管理插件的目录: .vim/bundle/vim-test

    • 目录组成
    vim-test
    |- README.md
    \- plugin
       |- test.vim
       \- test.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 测试插件内容
    " 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 函数定义结束
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 手动加载
    :source %
    # 或者使用命令缩写
    :so %
    
    • 1
    • 2
    • 3
    • 运行测试
    :call TestVim()		# 注意:必须带括号,即使没有参数
    
    • 1

    正常情况,可以在命令行中看到打印消息:TestVim say hello!

    3 自动加载插件

    创建好的插件,不可能总是手动加载,需要配置 vim 自动加载。

    由于使用 Vundle 管理插件,对应配置也放到 Vundle 部分。

    • 修改配置

    修改 .vimrc 或 _vimrc 配置文件:(具体配置不是本文内容,故不详述)

    call vundle#begin('$VIM/.vim/bundle')
    
    "...
    Plugin 'file:///D/ProgramFiles/Vim/.vim/bundle/vim-test'
    "...
    
    call vundle#end()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意:这里添加了本地全路径,意为 Vundle 从本地源安装插件。

    补充说明:

    根据网上内容,这样配置 Vundle 可以从本地源安装 vim 插件。但是在使用 :PluginInstall vim-test 命令进行安装时,却会出错。

    具体原因未深究。

    但是,测试发现,只要这样添加上配置,vim 就会自动加载插件, 只不过无法使用 Vundle 管理。而 Vundle 管理,最多的就是更新插件,但这个插件是我自己写在本地的,只要修改就更新了,不存在 Vundle 管理更新的问题。

    • 测试自动加载

    打开 vim,测试命令::call TestVim(),可以看到正确输出打印信息。

    4 命令与快捷键使用配置

    通常我们使用插件,要么是使用快捷键,要么是使用命令。

    • 修改配置

    注意:此配置也可以添加在 test.vim 末尾,vim 自动加载插件时,这些配置同样会生效。

    " vim-test {{{{{{{{{{
    command! TestVim call TestVim()		# 命令配置
    nnoremap Q :TestVim				# 快捷键配置
    " }}}}}}}}}} End of vim-test
    
    • 1
    • 2
    • 3
    • 4
    • 测试

    重启 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

  • 相关阅读:
    Windows电脑高颜值桌面便利贴,便签怎么设置
    解决Qt报错:Android deploy settings file not found, not building an APK.
    源码阅读四步走,这才是阅读源码的正确姿势
    最全最小系统板原理图设计实操(涉及电容、电阻选型)
    什么是RPC?RPC框架dubbo的核心流程
    第四届区块链游戏黑客马拉松: 创意与创新的碰撞
    Spring 的简单模拟实现
    Mybatis中 list.size() = 1 但显示 All elements are null
    识不足则多虑,威不足则多怒,信不足则多言
    0915练习
  • 原文地址:https://blog.csdn.net/kyzoon/article/details/134364172