[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.mzph.cn/news/144105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

局域网靶机渗透操作指南

一、背景 在网络环境复杂的当下&#xff0c;我们努力做一个清醒且明白的个人&#xff0c;在个人信息维护的时候可以更加有针对性&#xff0c;当前网络环境各方势力都对我们虎视眈眈&#xff0c;再这样的环境中一方面我们要避免成为黑暗的一面&#xff0c;但另一方面我们要了解…

深入了解域名与SSL证书的关系

在如今数字化的世界里&#xff0c;网络安全成为我们关注的重要议题之一。为了确保数据在网络上传输的安全性&#xff0c;我们通常会采取各种安全措施&#xff0c;其中最常用的就是SSL证书。然而&#xff0c;很多人并不了解SSL证书是如何与域名相互关联的。 首先&#xff0c;我…

Oxygen XML Editor 26版新功能

▲ 搜索“大龙谈智能内容”关注GongZongHao▲ 2023年10月26日&#xff0c;罗马尼亚SyncRO Soft公司发布Oxygen XML Editor、Oxygen Web Author和Oxygen Publish Engine 26版本。 1. Oxygen XML Editor 26新功能简介 AI助手 帮助写作者通过执行重复任务、审查语法、生成结构…

[C/C++] 数据结构 链表OJ题:相交链表(寻找两个链表的相交起始结点)

题目描述: 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返…

HTML简单介绍

且视他人之疑目如盏盏鬼火&#xff0c;大胆地去你的夜路。 目录 1.网页 2.Web标准 3.HTML 3.1HTML结构 3.2HTML标签​编辑 4.标签介绍 4.1排版标签 4.2文本格式化标签 4.3媒体标签 4.3.1图片标签 4.3.2 音频标签 4.3.3视频标签 5.相对路径 6.链接标签 6.1target属…

爬取动态网页内容的库

爬取动态网页内容时&#xff0c;传统的 Python 爬虫库&#xff08;如 Requests、BeautifulSoup&#xff09;可能无法直接获取 JavaScript 动态生成的内容。为了处理这种情况&#xff0c;你可以使用一些特别设计的库&#xff0c;它们能够模拟浏览器行为&#xff0c;执行 JavaScr…

图论15-有向图-环检测+度数+欧拉回路

文章目录 1. 有向图设计1.1 私有变量标记是否有向1.2 添加边的处理&#xff0c;双向变单向1.3 删除边的处理&#xff0c;双向变单向1.4 有向图的出度和入度 2 有向图的环检测2.1 普通的算法实现换检测2.2 拓扑排序中的环检测 3 欧拉回路 1. 有向图设计 1.1 私有变量标记是否有…

燃气管网监测系统|全面保障燃气安全

根据新华日报的报道&#xff0c;2023年上半年&#xff0c;我国共发生了294起燃气事故&#xff0c;造成了57人死亡和190人受伤&#xff0c;燃气事故的发生原因有很多&#xff0c;其中涉及到燃气泄漏、设备故障等因素。因此&#xff0c;加强燃气安全管理&#xff0c;提高城市的安…

在 Kubernetes 上运行 Elasticsearch

Kubernetes&#xff08;快速&#xff09;入门 Kubernetes 是一种容器编排技术&#xff0c;这只是一种奇特的说法&#xff0c;它可以帮助您管理和运行打包的应用程序。它基本上看起来像这样&#xff1a; 库伯内特斯架构 Kubernetes 基本架构 您的应用程序&#xff08;例如博客软…

vue、react中虚拟的dom

React中虚拟DOM的例子&#xff1a; 下面是一个使用React创建的简单的计数器组件&#xff1a; import React, { Component } from react;class Counter extends Component {constructor(props) {super(props);this.state {count: 0};}handleClick () > {this.setState({c…

httpClient超时时间详解与测试案例

使用httpclient作为http请求的客户端时&#xff0c;我们一般都会设置超时时间&#xff0c;这样就可以避免因为接口长时间无响应或者建立连接耗时比较久导致自己的系统崩溃。通常它里面设置的几个超时时间如下&#xff1a; RequestConfig config RequestConfig.custom().setCo…

电磁场与电磁波part1--矢量分析

目录 1、方向导数 2、散度定理&#xff08;高斯定理&#xff09; 3、散度与旋度的比较 4、旋度定理&#xff08;斯托克斯定理&#xff09; 5、关于点乘、叉乘、梯度、散度、旋度的计算 ~~~~~~~~~~~~~~~~~~~~~~~~ 确认过眼神&#xff0c;是我看不懂的 ~~~~~~~~~~~~~~~~…

IDEA没有Add Framework Support解决办法

点击File—>Settings 点击第一个设置快捷键 点击apply和ok即可 我们要点击一下项目&#xff0c;再按快捷键ctrlk 即可

C++入门(2)—函数重载、引用

目录 一、函数重载 1、参数类型不同 2、参数个数不同 3、参数顺序不同 4、 链接中如何区分函数重载 二、引用 1、规则 2、特征 3、使用场景 做参数 做返回值 4、常引用 5、传值、传引用效率比较 6、引用和指针的区别 接上一小节C入门(1)—命名空间、缺省参数 一…

Python 如何实现适配器设计模式?什么是适配器(Adapter)设计模式?

什么是适配器设计模式&#xff1f; 适配器&#xff08;Adapter&#xff09;设计模式是一种结构型设计模式&#xff0c;它允许接口不兼容的类之间进行合作。适配器模式充当两个不兼容接口之间的桥梁&#xff0c;使得它们可以一起工作&#xff0c;而无需修改它们的源代码。 主要…

JXLS 导出多sheet,带页眉页脚

/*** 生成多sheet Excel* 带自定义页眉页脚** param templatePath* param sheetList* return* throws IOException*/public static byte[] generateMultiSheet(String templatePath, List<JxlsHelper2.SheetContext> sheetList) throws IOException {ByteArrayOutputStre…

C++ 基础

准备工具Vscode或者Clion或者Dev C或者Vs studio 和 MSYS2 是C跨平台的重要工具链. 基础一 准备工作安装MSYS2软件 创建文件 一、基本介绍1.1C源文件1.2 代码注释1.3变量与常量1.3.1变量1.3.2 常量1.3.3 二者的区别&#xff1a; 1.4 关键字和标识符 二、数据类型2.1 基本数据类…

Flink CDC

1、Flink CDC的介绍&#xff1a; 是一种技术&#xff0c;可以帮助我们实时的捕获数据库中数据的变化&#xff0c;并将这些变化的数据以流的形式传输到其他的系统中进行处理和存储。 2、Flink CDC的搭建&#xff1a; 1、开启mysql的binlog功能&#xff1a; # 1、修改mysql配置…

C/C++ 实现获取硬盘序列号

获取硬盘的序列号、型号和固件版本号&#xff0c;此类功能通常用于做硬盘绑定或硬件验证操作&#xff0c;通过使用Windows API的DeviceIoControl函数与物理硬盘驱动程序进行通信&#xff0c;发送ATA命令来获取硬盘的信息。 以下是该程序的主要功能和流程&#xff1a; 定义常量…

2023版Idea创建JavaWeb时,右键new没有Servlet快捷键选项

问题&#xff1a;右键时&#xff0c;没有创建servlet的快捷键&#xff0c;如下图&#xff1a; 解决方法&#xff1a; 1.打开idea&#xff0c;点击File>settings(设置)&#xff0c;进入settings页面&#xff0c;如下 从上图中的Files选项中没看到有servlet选项&#xff0c;…