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

Vim9 语法高亮syntax 在指定的缓冲区和窗口执行命令

背景:从开发,创建makefile、编译、单元测试、到生产部署都只有俺一个人,所以所有的工作都要自己完成,因此有了想法做一个插件,按需实现:构建Makefile,编译、打包、压缩、上传服务器、解压、安装应用(包括了计划任务、apache配置等等),先上个图,左下角是自己开发的快捷编译、部署的插件


知识点:

1.用命令在vim9script脚本中实现分屏

我是先定位到树形目录的窗口,然后在分割

var winid: number = Find_Nerdtree_Win()

if winid != -1

    # 树形目录存在,光标定位在树形目录中
    exe ':' .. winid .. 'wincmd w'

    # 在树形目录窗口下方新建快捷编译插件窗口
    exe 'silent rightbelow :' .. win_height .. 'split ' .. win_title
else
    # 在当前窗口左边新建快捷编译插件窗口
    exe 'silent aboveleft :' .. win_height .. 'split ' .. win_title
endif

2.高亮syntax应用,我这里主要是插件窗口中对关键字中的指定字符进行高亮

# syntax match qChar /C/ contained
# syntax match mItem /MakeClean/
exec ':' .. win_id .. 'windo syntax match qChar' .. i .. ' /' .. menu_item["shortcut"] .. '/ contained'
exec ':' .. win_id .. 'windo syntax match mItem' .. i .. ' /' .. menu_item["name"] ..  '/ contains=qChar' .. i

# 为语法组qChar进行高亮设置
exec ':' .. win_id .. 'windo hi qChar' .. i .. ' cterm=underline ctermfg=' .. g:dpYellowOrange["cterm256"]

windo:是指在指定的窗口执行命令,之所以没有用bufdo,bufdo会导致当前的窗口也会显示插件的内容

这里采用的是嵌套是的高亮,意思可以理解必须满足一定的条件后,才对匹配的内容进行高亮,例如:

syntax match qChar // contained

syntax match mItem /MakeClean/ contains=qChar

hi qChar cterm=underline ctermfg=......

 qChar和mItem都是组名称,用于hi命令,对哪个组进行语法高亮配置

syntax后续有三种匹配方式:keyword(关键字)、match(正则匹配)、region(范围 start=// end=//)

先记到这里了,再次在更新


http://www.kler.cn/a/391791.html

相关文章:

  • 24.11.13 Javascript3
  • 计算机毕业设计Python+Neo4j知识图谱医疗问答系统 大模型 机器学习 深度学习 人工智能 大数据毕业设计 Python爬虫 Python毕业设计
  • MyBatis CRUD快速入门
  • request爬虫库的小坑
  • 【Linux】TCP原理
  • HarmonyOS Next星河版笔记--界面开发(4)
  • Java 中的 Predicate:让判断逻辑更清晰灵活
  • 把越南语翻译成中文一般用什么翻译工具?《越南语翻译通》App或许能满足你的技术痛点需求!
  • OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示
  • 【大语言模型】ACL2024论文-09 无监督信息精细化训练用于增强大型语言模型的检索增强生成
  • 从美国大选,看软件安全风险与挑战
  • 利用阿里云下载 WebRTC 源码
  • Golang 编码(url,base64,hex,md5,sha-1)
  • 鸿蒙应用权限控制与位置服务(Location Kit)
  • LeetCode【0016】最接近的三数之和
  • EasyExcel级联下拉
  • 压缩感知:高效信号采样与重建的理论与实践
  • Paddle分布式训练报NCCL错
  • Windows 局域网IP扫描工具:IPScaner 轻量免安装
  • [产品管理-70]:四种不同的创新战略框架的比较:皮萨诺创新景观图、波特竞争战略、安索夫矩阵、马尔斯和斯诺战略框架
  • 使用Python Flask构建Web应用
  • 思考:linux Vi Vim 编辑器的简明原理,与快速用法之《 7 字真言 》@ “鱼爱返 说 温泉啊“ (**)
  • <el-select> :remote-method用法
  • djang5 官网_polls_app_03( 关于Views)
  • SpringBoot单体服务无感更新启动,动态检测端口号并动态更新
  • Python学习从0到1 day26 第三阶段 Spark ② 数据计算Ⅰ