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

[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

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

2 创建插件

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

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

正常情况,可以在命令行中看到打印消息: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()

注意:这里添加了本地全路径,意为 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<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

相关文章:

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

0 环境 Windows 11 22H2gVim82 (D:/ProgramFiles/Vim)Python311 (D:/ProgramFiles/Python311)Vundle v0.10.2 1 Vim 支持 Python gVim82 默认配置中&#xff0c;使用的是 Python3.8。 但我的环境安装的是 Python3.11&#xff0c;且不是安装在默认路径下。虽然添加了 PATH 环…...

深入理解JVM虚拟机第二十篇:静态变量和局部变量的对比以及栈帧对垃圾回收的意义以及JVM中栈帧与堆内对象的应用关系图示

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻JVM 本文章简介:话不多说,让我们讲清楚静态变量和局部变量的对比 文章目录…...

【计算机网络基础实验】实验二 有线IP互通网络实践

任务一 IP路由协议实现企业路由器通信 目录如下&#xff1a; 任务一 IP路由协议实现企业路由器通信2.1.1 任务描述2.1.2 任务目的2.1.3 任务实施实验需求实验步骤步骤1&#xff1a;更改每台设备的名称步骤2&#xff1a; 给R1接口配置相应IP地址步骤3&#xff1a; 给R2接口配置相…...

【Orangepi Zero2 全志H616】驱动串口实现Tik Tok—VUI(语音交互)

一、编程实现语音和开发板通信 wiringpi库源码demo.c 二、基于前面串口的代码修改实现 uartTool.huartTool.cuartTest.c 三、ADB adb控制指令 四、手机接入Linux热拔插相关 a. 把手机接入开发板 b. 安装adb工具&#xff0c;在终端输入adb安装指令&#xff1a; sudo apt-g…...

【Spring】静态代理

例子&#xff1a; 租房子 角色&#xff1a; 我 &#xff08;I ) 中介( Proxy ) 房东( host ) Rent 接口 package org.example;public interface Rent {void rent(); }房东 package org.example;public class Host implements Rent{Overridepublic void rent() …...

tomcat web.xml文件中servlet的load-on-startup

先看一个例子&#xff1a; <servlet><description>JAX-WS endpoint - restful</description><display-name>restful</display-name><servlet-name>restful-addnumbers</servlet-name><servlet-class>com.sun.xml.ws.transpor…...

记chrome打不开网址,无法搜索问题

打开网址解决办法 2023关于chrome谷歌浏览器无法正常上网问题&#xff0c;解决办法&#xff0c;亲测有效 下载插件&#xff0c;解压后拖入chrome的扩展程序中&#xff0c;可以打开国内网址 google引擎搜索解决办法 打开无痕浏览 &#xff08;不知道什么原理&#xff0c;可…...

Spring面试题:(五)Spring注解开发@Component,@Autowired,@Bean,@Configuration

Bean基本注解 spring提供注解的版本 Component注解替代bean标签 bean其它属性的相关注解&#xff1a; scope 替代scopelazy 替代lazy-initPostConstruct 替代init-methodPreDestroy 替代destroy-method 使用Component注解的前提是开启注解扫描 衍生注解Repository,Servi…...

【Qt-23】ui界面设计-ToolBar

1、ToolBar 右击主窗体添加工具栏 新建动作&#xff0c;可设置图标&#xff0c;图标有本地文件和资源两种方式。 修改toolButtonStyle的属性&#xff0c;可设置图标与汉字显示的方式。 页面跳转&#xff1a; connect(ui->action, SIGNAL(triggered()), this, SLOT(openWid…...

nodejs 异步架构

nodejs的核心之一就是非阻塞的异步IO&#xff0c;于是想知道它是怎么实现的&#xff0c;挖了下nodejs源码&#xff0c;找到些答案&#xff0c;在此跟大家分享下。首先&#xff0c;我用了一段js代码test-fs-read.js做测试&#xff0c;代码如下&#xff1a; var path require(pa…...

腾讯云优惠券介绍、作用、领取方法及使用教程

随着云计算技术的发展&#xff0c;越来越多的企业和个人选择使用云服务进行数据存储、计算等业务。腾讯云作为国内知名的云服务商&#xff0c;提供了一整套完善的云解决方案&#xff0c;并不定期发放优惠券以吸引更多的客户。本文将为大家详细介绍腾讯云优惠券的作用、领取方法…...

浅谈智能变电站自动化系统的应用与产品选型

安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;现如今&#xff0c;智能变电站发展已经成为了电力系统发展过程中的内容&#xff0c;如何提高智能变电站的运行效率也成为电力系统发展的一个重要目标&#xff0c;为了能够更好地促进电力系统安全稳定运行&#xff0c;…...

适用于初学者的 .NET MAUI

适用于初学者的 .NET MAUI | Microsoft Learn 记录微软Learn中用到的代码。文章比较粗糙&#xff0c;大部分是项目代码粘贴。想详细学习的可到上面的链接学习&#xff0c;代码可以从这里复制后直接运行。 练习中一共有两个页面&#xff1a; 1、MainPage.xaml 用于添加列表中的…...

Web3项目灵魂所在之智能合约编写(Web3项目一实战之二)

正如标题所言,为什么将智能合约称为Web3项目的灵魂所在呢?其实,智能合约好比是传统App的服务器端,若服务器端宕机了,App也就僵死了。 假使您正在浏览本篇文章时,对智能合约还不是很了解,或者说是只知其名不知其意的话,那么,烦请您移步我另外一篇关于 区块链中的智能合…...

python-jupyter实现OpenAi语音对话聊天

1.安装jupyter 这里使用的是jupyter工具&#xff0c;安装时需要再cmd执行如下命令&#xff0c;由于直接执行pip install jupyter会很慢&#xff0c;咱们直接使用国内源 pip install --user jupyter -i http://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.t…...

恒源云之oss上传数据、云台下载数据

目录 一、本地cmd上传数据二、使用云平台下载数据 一、本地cmd上传数据 需要下载恒源云客户端oss需要先将数据&#xff08;代码、数据集&#xff09;压缩成zip文件。 本地cmd打开oss&#xff0c;测试是否安成功 oss输入oss命令&#xff0c;并正确输入账号密码 oss login在个人…...

大数据-之LibrA数据库系统告警处理(ALM-12039 GaussDB主备数据不同步)

告警解释 GaussDB主备数据不同步&#xff0c;系统每10秒检查一次主备数据同步状态&#xff0c;如果连续6次查不到同步状态&#xff0c;或者同步状态异常&#xff0c;产生告警。 当主备数据同步状态正常&#xff0c;告警恢复。 告警属性 告警ID 告警级别 可自动清除 12039…...

【左程云算法全讲6】链表相关

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于左程云算法课程进行的&#xff0c;每个知识点的修正和深入主要参考…...

从HDFS到对象存储,抛弃Hadoop,数据湖才能重获新生?

Hadoop与数据湖的关系 1、Hadoop时代的落幕2、Databricks和Snowflake做对了什么3、Hadoop与对象存储&#xff08;OSD&#xff09;4、Databricks与Snowflake为什么选择对象存储5、对象存储面临的挑战 1、Hadoop时代的落幕 十几年前&#xff0c;Hadoop是解决大规模数据分析的“白…...

灰度与二值化

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...