【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段

文章目录

  • 【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段
    • 1 问题由来
    • 2 操作流程
      • 步骤1:打开代码片段定制页
      • 步骤2:在新标签页输入定制 XML
      • 步骤3:保存定义内容
      • 步骤4:功能测试
    • 3 拓展

【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段


1 问题由来

Markdown 文档编辑神器 Typora

【图 1 Markdown 文档编辑神器 Typora】

用惯了 Typora 这类专门写 Markdown 文章的软件后,偶尔遇到一些不方便处理的 HTML 标记就显得很不流畅。比如给某个按键添加 <kbd></kbd> 标签,Typora 里就没有对应的快捷键。通常我都是用行内的代码块来替代(快捷键:Ctrl + Shift + `),比如按下 Ctrl 键,就表示成 Ctrl,而不是通过手动添加 <kbd> 标签变成 Ctrl

但最近刚好就碰到需要大量输入这样的按键格式的场景。因为我想把 Vim 的操作技巧再整理整理,以前落下的笔记顺便完善完善。结果里面就有大量按键组合需要输入。如果都做成代码块的格式倒也不是不行,可转念一想,自己天天写博客都在提醒大家注意文档的语义化,写的时候虽然麻烦些,但后面这类高质量内容就可以很方便地用于其他场合,比如屏幕阅读工具、NLP 语料库的数据训练等等,所以还是写成 <kbd> 标签更合适。

那么,有没有什么方法可以加速这个格式化过程呢?

我想到了 Sublime Text 提供的自定义代码片段(Snippets)功能。

2 操作流程

根据 Sublime Text 的官方文档,定制代码片段成功后,只需要在某个语法环境里(比如默认的纯文本环境,即 plain text)输入一串快捷字符(如小写英文字母 k),然后按下 Tab 键,编辑器就能快速生成 <kbd></kbd>,并且光标还能自动定位到标签之间。这样,只需输入我想要文本内容,再全选、剪切、粘贴——就大功告成了!

具体步骤如下:

步骤1:打开代码片段定制页

位置:Tools | Developer | New Snippet...

步骤 1 截图

【图 2 打开代码片段定制页】

步骤2:在新标签页输入定制 XML

内容如下:

<snippet><content><![CDATA[<kbd>${1:Your Key}</kbd>]]></content><!-- Optional: Set a tabTrigger to define how to trigger the snippet --><tabTrigger>k</tabTrigger><!-- Optional: Set a scope to limit where the snippet will trigger --><scope>text.plain</scope><description>自动生成按键元素 &lt;kbd>&lt;/kbd>,并让光标定位到开闭标签之间</description>
</snippet>

除了默认打开时的纯文本环境(text.plain),常见的语法环境对应的 <scope> 节点的取值如下:

语法环境scope 取值
JavaScriptsource.js
HTMLsource.html
CSSsource.css
Javasource.java
Csource.c
C++source.cpp
PHPsource.php
Rubysource.ruby
Gosource.go
Shell 脚本source.shell
基础 HTMLtext.html.basic
JSONsource.json
XMLtext.xml

步骤3:保存定义内容

步骤2 中定义的内容会以文件形式默认保存到 Sublime Text 数据目录下的 User 包(Package)里面,格式为:<CUSTOM_SNIPPET_NAME>.sublime-snippet,比如我这个片段,就命名为:keyboard_tag_pair.sublime-snippet

图 3 保存定义内容

【图 3 保存定义内容】

如果没有自动定位到这里也无妨,用这段 PowerShell 脚本查看即可:

echo $env:APPDATA

再不行,就用最原始的方式:在 Sublime Text 图标上右键,选择打开文件所在的位置:

图 4 从应用图标反向查找 Sublime Text 安装路径

【图 4 从应用图标反向查找 Sublime Text 安装路径】

再次强调,新增的这个片段文件,它的扩展名一定得是 *.sublime-snippet 形式,否则编辑器无法正确识别!!!

一定得是 *.sublime-snippet 形式!!!
一定得是 *.sublime-snippet 形式!!!
一定得是 *.sublime-snippet 形式!!!

重要的事情说三遍。

步骤4:功能测试

由于该片段在纯文本环境生效(定义作用域时写的 <scope>text.plain</scope>),因此只需打开一个空白标签,输入小写英文字母 k,然后按下 Tab 键,应该就会看到下面的效果:

自动生成的 HTML 代码片段测试效果

【图 5 自动生成的 HTML 代码片段测试效果】

然后输入 Ctrl,就变成了:

图 6 直接输入中间的文字内容

【图 6 直接输入中间的文字内容】

这时再全选、剪切(或复制),就可以粘贴到 Typora 生成按键效果的字符内容了!

3 拓展

既然可以自定义 <kbd></kbd> 这样的 HTML 标记内容,发表博文时自定义的一些 HTML 片段也可以用它来生成。

如果需要多个占位符(如上面的 Your Key 提示信息),可以使用 ${2:placeholder2}${3:placeholder3} 这样的格式指定占位符出现的具体位置;调用时通过 Tab 键能可以实现按指定的序号依次选中每个需要手动输入的地方。最后再全选复制出来,就都搞定了。

要是定义片段的时间过于久远,或者不知道当前这台电脑定义了那些可用的片段,可以通过这行 PowerShell 脚本查看:

ls $env:APPDATA/"Sublime Text"/packages/User/*.sublime-snippet

这里的 $env:APPDATA/"Sublime Text" 就是当前电脑 Sublime Text 的安装路径。

最后的最后,再介绍一个快速浏览自定义代码片段的操作:使用快捷键 Ctrl + Shift + P 弹出命令条,输入 snippet: 就能看到已经定义好的代码片段:

图 7 通过快捷命令栏快速浏览可用的自定义代码片段

【图 7 通过快捷命令栏快速浏览可用的自定义代码片段】

更多配置详情,可以参考 Sublime Text 的官方文档:https://www.sublimetext.com/docs/completions.html#snippets。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/439974.html

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

相关文章

【Python】wxPython 高 DPI 缩放问题(笔记本上字体模糊问题)

问题 使用 wxPython 编写的程序在某些高 DPI 的电脑&#xff08;通常是笔记本&#xff09;上显示出来的字体会非常模糊&#xff1a; 事实上 wxPython 是支持高 DPI 的&#xff0c;但是由于我们的程序没有显式指明支持高 DPI&#xff0c;因此系统默认不支持高 DPI&#xff0c;…

【C++驾轻就熟】vector深入了解及模拟实现

​ 目录 ​编辑​ 一、vector介绍 二、标准库中的vector 2.1vector常见的构造函数 2.1.1无参构造函数 2.1.2 有参构造函数&#xff08;构造并初始化n个val&#xff09; 2.1.3有参构造函数&#xff08;使用迭代器进行初始化构造&#xff09; 2.2 vector iterator 的使…

【GC日志和OOM日志分析】JVM GC日志和OOM Dump文件分析

1 缘起 充电、充电、充电。 增加一些必备的知识&#xff0c;帮助后续使用。 2 配置JVM参数 为分析GC日志以及OOM相关信息&#xff0c;配置JVM参数&#xff0c;分为三个部分&#xff1a; &#xff08;1&#xff09;堆内存&#xff0c;包括年轻代、最大堆内存&#xff1b; &a…

VUE 开发——Node.js学习(一)

一、认识Node.js Node.js是一个跨平台JavaScript运行环境&#xff0c;使开发者可以搭建服务器端的JavaScript应用程序 使用Node.js编写服务器端程序——编写数据接口、前端工程化&#xff1b; Node.js环境没有BOM和DOM&#xff1b; Node.js安装&#xff1a;下载node-v16.19…

深度学习----------------------注意力机制

目录 心理学不随意线索随意线索 注意力机制非参注意力池化层Nadaraya-Watson核回归参数化的注意力机制 总结注意力汇聚&#xff1a;Nadaraya-Watson核回归代码生成数据集核回归非参数注意力汇聚注意力权重该部分总代码 带参数的注意力汇聚将训练数据集转换为键和值训练带参数的…

[Linux] 进程创建、退出和等待

标题&#xff1a;[Linux] 进程创建、退出和等待 个人主页水墨不写bug &#xff08;图片来源于AI&#xff09; 目录 一、进程创建fork&#xff08;&#xff09; 1&#xff09; fork的返回值&#xff1a; 2&#xff09;写时拷贝 ​编辑3&#xff09;fork常规用法 4&#xff…

线性代数书中求解齐次线性方程组、非齐次线性方程组方法的特点和缺陷(附实例讲解)

目录 一、克拉默法则 1. 方法概述 2. 例16(1) P45 3. 特点 (1) 只适用于系数矩阵是方阵 (2) 只适用于行列式非零 (3) 只适用于唯一解的情况 (4) 只适用于非齐次线性方程组 二、逆矩阵 1. 方法概述 2. 例16(2) P45 3. 特点 (1) 只适用于系数矩阵必须是方阵且可逆 …

计算机毕业设计 基于Python的无人超市管理系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

Leecode热题100-560.和为k的子数组

给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums [1,2,3], k…

五、类与对象包访问权限

类与对象&包&访问权限 类的定义类的概念定义和使用类对象的初始化类的成员函数 再谈基本类型运算符重载函数中缀函数空值和空类型解构包和导入访问权限控制内部类 类的定义 在之前&#xff0c;我们一直在使用顶层定义&#xff1a; 在Kotlin中&#xff0c;顶层定义&…

计算机网络:计算机网络概述 —— 网络拓扑结构

文章目录 网络拓扑总线型拓扑特点缺陷 星型拓扑特点缺陷 环型拓扑特点缺陷 网状型拓扑优点缺陷 树型拓扑特点缺陷 网络拓扑 网络拓扑指的是计算机网络中节点&#xff08;计算机、交换机、路由器等&#xff09;之间物理或逻辑连接的结构。网络拓扑定义了节点之间的布局、连接方…

基于ssm 框架的java 开发语言的 在线教育学习平台系统设计与实现 源码 论文

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm springcloud等开发框架&#xff09; vue .net php phython node.js uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆…

【高等数学学习记录】函数的极限

一、知识点 &#xff08;一&#xff09;知识结构 #mermaid-svg-Dz0Ns0FflWSBWY50 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Dz0Ns0FflWSBWY50 .error-icon{fill:#552222;}#mermaid-svg-Dz0Ns0FflWSBWY50 .erro…

ROW_NUMBER

How to rewrite a query which uses the ROW_NUMBER() window function in versions 5.7 or earlier before window functions were supported e.g., SELECT ROW_NUMBER() OVER (PARTITION BY fieldA) AS rownum, myTable.* FROM myTable; index 用不上的 Solution Assuming…

保姆级手把手使用YOLOv11训练自己数据集(含源代码、网络结构、模型检测和转换 、数据集查找、模型训练)

文章目录 前言项目地址项目内容&#xff1a;网络模型结构性能测试任务描述任务内容 项目运行模型训练 前言 本教程内含YOLOv11网络结构图训练教程推理教程数据集获取等有关的内容~ 项目地址 YOLO11是Ultralytics YOLO系列实时目标检测器的最新迭代版本&#xff0c;它以尖端的…

打卡第三天 P5729 【深基5.例7】工艺品制作

今天是我打卡第三天&#xff0c;做个入门题吧(#^.^#) 原题链接&#xff1a;【深基5.例7】工艺品制作 - 洛谷 题目描述 输入格式 输出格式 输出一个整数表示答案。 输入输出样例 输入 #1 4 4 4 1 1 1 1 2 2 2 输出 #1 56 说明/提示 C&#xff1a; #include<bits/std…

使用 classification_report 评估 scikit-learn 中的分类模型

介绍 在机器学习领域&#xff0c;评估分类模型的性能至关重要。scikit-learn 是一个功能强大的 Python 机器学习工具&#xff0c;提供了多种模型评估工具。其中最有用的函数之一是 classification_report&#xff0c;它可以全面概述分类模型的关键指标。在这篇文章中&#xff…

低组装滚珠导轨:承载力强,适应多样工况!

在自动化行业中&#xff0c;高质量、高效率的生产线是确保产品品质和生产效率的关键。而低组装型滚珠导轨作为生产线中的重要组件之一&#xff0c;能够提供精准的直线运动控制&#xff0c;为自动化设备的稳定运行和高精度检测提供可靠支持。 相对于传统的导轨系统来说&#xff…

汇编语言笔记2

7.MASM,NASM,ATT,ARM的介绍 MASM:Windows下编译汇编指令的软件,可以在DOSBox下运行 NASM:优化版的MASM,主要用于Linux操作系统 ATT:Linux默认的汇编风格(但不友好) ARM:非PC(IOT设备)的汇编,比如写51单片机打开keil4的界面可以看到ARM 8.汇编 C语言 C 之间的关系 发展历程…

Arduino UNO R3自学笔记21 之 Arduino电机的闭环控制

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;上篇写了电机速度测定&#xff0c;这篇主要是讲测定出的速度用于反馈&#xff0c;使得实际速度快速响应到需要的速度。 1.控制系统介绍 分2大类&#x…