当前位置: 首页 > news >正文

[vim]Python编写插件学习笔记2 - 分离

0 环境

  1. Windows 11 22H2
  2. gVim82 (D:/ProgramFiles/Vim)
  3. Python311 (D:/ProgramFiles/Python311)
  4. Vundle v0.10.2

阅读本文前,需要先了解前文:

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

1 Python 与 vimscript 分离

前文编写 vim 插件的方式,是将 Python 代码嵌入到 vimscript 代码中。

而由于 Python 代码的格式问题(Tab 键),将 Python 代码独立出来,更方便 Python 代码的编写,同时也方便模块/单元调试。

以下实现参考自 《MixedMath: Writing a Python Script to be Used in Vim (davidlowryduda.com)》一文实现。

  • vimscript
" test.vimlet s:script_dir = fnamemodify(resolve(expand('<sfile>', ':p')), ':h')function! TestVim()python3 << EOF
# python part startimport sys								# 必要的引用
import vimscript_dir = vim.eval('s:script_dir')
sys.path.insert(0, script_dir)			# 关键的三句,主要是添加 Python 搜索路径import test								# 引用test.TestVim2()							# 调用# python part end
EOFendfunction
  • python
# -*- coding: utf-8 -*-
### test.pydef TestVim2():print("TestVim say hello 2!")

(为了与之前的代码区分,所以改成了 TestVim2,输出消息也进行了修改!)

  • 加载
:so %
  • 测试
:call TestVim()

补充说明:

加载与测试,一般在先当前 vim 进程加载测试。

但是,由于之前内容有添加 vim 自动加载,所以应该注意代码内容最好有变化,以分区 vim 自动加载的旧版本插件内容。或者,更直接的,先删除/注释掉自动加载插件的配置。

另外,猜想应该是 vim 加载 Python 插件的问题,手动加载命令 :so %,有时仍会出现调用时,找不到 Python 函数/模块的问题(代码没问题)。此时,重启一下 vim 即可。

2 参考

  1. Writing Vim plugin in Python (candidtim.github.io)
  2. How to Write Vim Plugins with Python - DZone
  3. Learn Vimscript the Hard Way (stevelosh.com)
  4. MixedMath: Writing a Python Script to be Used in Vim (davidlowryduda.com)
  5. Vim script for Python Developers · GitHub
http://www.lryc.cn/news/230319.html

相关文章:

  • 【已解决】ModuleNotFoundError: No module named ‘kornia‘
  • 预览PDF并显示当前页数
  • 阿里云优惠券介绍、作用、领取入口及使用教程
  • Shell编程--流程控制
  • 设计模式-模板方法模式(Template Method)
  • 远程登录Linux方法(Linux平台相互远程;Windows远程登录Linux、远程编码、文件传输;无法远程登录的问题解决;c程序的编译)
  • macOS 13.6 及后续系统安装 Asahi Linux 将破坏引导
  • Python武器库开发-flask篇之flask框架的安装(二十一)
  • 【CASS精品教程】打开cass提示base.dcl未找到文件的解决办法
  • [vim]Python编写插件学习笔记3 - 命令行参数
  • 【仙逆】王林400年晋升元婴,复仇藤化元杀尽藤姓,高老畏罪自裁
  • 云原生实战课大纲
  • 数据湖架构
  • Zabbix 5.0部署(centos7+server+MySQL+Apache)
  • YOLO改进系列之注意力机制(CloAttention模型介绍)
  • openssl+AES开发实例(linux)
  • FreeRTOS源码阅读笔记3--queue.c
  • 云原生Kubernetes系列 | 通过容器互联搭建wordpress博客系统
  • java读取OPC DA数据---Utgard
  • 在 Android 上简单安全地登录——使用凭证管理器和密钥
  • 【Python】上市公司数据进行经典OLS回归实操
  • 科研学习|科研软件——有序多分类Logistic回归的SPSS教程!
  • 微服务简单理解与快速搭建
  • QColorDialog开发实例
  • linux实现全局快捷键
  • 共享台球室小程序系统:智能化预约与管理
  • 百度文心一言
  • 225.用队列实现栈(LeetCode)
  • 汽车FMCW毫米波雷达信号处理流程(推荐---基础详细---清楚的讲解了雷达的过程---强烈推荐)
  • 8.指令格式,指令的寻址方式