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

#哪个编程工具让你的工作效率翻倍?#

【工欲善其事】巧用 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安冬的码畜日常

您的鼓励是我持续优质内容的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值