学写 vscode 的 snippets,实现带当前日期的特定文字片段

需求

我打算使用 markdown 进行日常任务的管理与记录,每个任务的具体记录类似以下的格式:

## 任务标题 (2022.05) 
任务描述

- TODO
  - [ ] XXX
  - [ ] XXX

- LOGS:
  - ...(2022.2.2)
  - ...(2022.3.3)

每当有一个新任务的时候,都要弄出上述一堆格式出来,手工整出来当然比较麻烦,因此想到利用 vscode 的 snippet 功能来实现。

学习

于是上搜索引擎查找关键字 vscode snippet,看了好几篇也没有找到几个讲得特别明白的。无意中发现在 vscode 软件自己的扩展里可以直接搜索 snippets,于是输入 markdown snippets,搜索出了 markdown-snippets 这个扩展。从这个扩展的详情页面上,找到了一些资源,作者不仅编写了一个 vscode 内置代码片段查看器(Snippets Ranger extension),而且写了一篇很详细的 snippet 入门介绍文章

从 vscode 的 markdown-snippets 扩展的资料中看到,vscode 其实是自带了很多的 snippets 的。比如对于 markdown,其 snippets 就保存在 <vscode 安装目录>\resources\app\extensions\markdown-basics\snippets\markdown.code-snippets 这个文件里。打开该文件,我们可以看到官方定义的各级别 heading 等一系列 snippets,我们马上来试验一下。打开一个 markdown 文件,新起一行,输入一个 i,按下 Ctrl-Space,咦,没什么反应呀?

认真检查后发现,Ctrl-Space 快捷键被系统输入法占用去做中英文切换了。我的 win10 只使用搜狗输入法,连系统自带的输入法都卸载干净了,中英文切换都使用左Shift键,根本用不上 Ctrl-Space。由于 win10系统可能的bug,经由控制面板无法成功修改该快捷键,参考这篇文章 对注册表进行修改后,重启电脑再试一下。打开 markdown 文件,新起一行,输入 i,按下 Ctrl-Space,这次成功了,vscode 弹出了一个小窗口,提示我可以选择 heading1 到 heading6 等一系列 snippets。


(2024年2月补充)
经确认,上述无法经由 windows 配置界面取消 Ctrl-Space 快捷键的bug,在 win11 22H2 上依旧存在。因此前述对注册表的修改蛮有用,每次重装系统都要用到,特别总结如下:

  1. 运行注册表编辑器,找到 HKEY_CURRENT_USER/Control Panel/Input Method/Hot Keys
    ——其中的 0000001000000070 分别是简繁中文热键,这两个都要修改
    ——右边键值中,Key Modifiers02 c0 00 00 表示 Ctrl 键,Virtual Key20 00 00 00 表示 Space
  2. 修改 Key Modifiers 的首字节为 00,修改 Virtual Key 的首字节为 ff
  3. 注销系统用户,重新登录即可
  4. 注意,之后切勿打开系统配置界面修改输入法相关热键,否则又要再弄一次

好了,知道 snippets 怎么用了,我们就准备动手写自己需要的 snippets 了。

实现

最终实现的步骤及内容如下。

  1. 新建“用户自定义 snippets”
    在 vscode 主界面,点击菜单 File---Preferences---User Snippets(或者点击侧面工具栏的齿轮---User Snippets),此时系统会列出所有用户自定义的 snippets 文件,以及若干新建 Snippets 的选项。若当前处于“打开目录”的状态下,还会多出New Snippets file for <dir>... 的选项。

    考虑到日常只有我们的日志系统需要用到前述特定片段,因此在确保 vscode 通过Open Folder... 打开我们的日志目录之后,我们选择New Snippets file for <dir>...。输入文件名 daily_task,则保存的用户自定义 snippets 文件就叫 daily_task.code-snippets,保存在我们的日志目录的 .vscode 子目录下。

  2. 实现语法配置
    在新打开的 daily_task.code-snippets 文件里,输入下述内容:

    {
     	"daily_new_task":{
     		"scope": "markdown",
     		"prefix": "任务",
     		"body": [
     			"## ${1:任务标题} (${CURRENT_YEAR}.${CURRENT_MONTH})",
     			"${2:简要描述任务背景}\n",
     			"- TODO",
     			"  - [ ] ${3:当前要完成的步骤}\n",
     			"- LOG",
     			"  - ${4:第一条进度记录}(${CURRENT_YEAR}.${CURRENT_MONTH}.${CURRENT_DATE})",
     		]
     	}
    }
    

    具体语法及其含义参见本文参考文献。

  3. 效果演示
    每当我在 markdown 里输入任务二字,然后按下 Ctrl-Space,就可以看到有个 daily_new_task 的提示,回车后就输入了如下内容:
    自定义 snippets 效果
    此时的光标停在 任务标题 上,且四个字都是处于 选定 的状态,一旦我们输入任意字符,这四个字就会立刻被替换。我们可以看到,除了 任务标题 之外、还有简要描述任务背景当前要完成的步骤第一条进度记录共四小段提示性文字都是被 预选定 的,当我们写完标题后,按下tab键,光标就会跳到 简要描述任务背景 小段并全选之,后面依次类推。这样我们就可以仅通过 tab 键快速输入当前任务的主要内容了。

参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
vscode arduino-snippets是一个为Arduino开发器设计的扩展程序,它提供了一系列代码片段,方便开发者在编写Arduino代码时快速输入常用的代码段。 首先,该扩展为开发者节省了大量时间。在日常的Arduino开发过程中,一些代码段如初始化串口、读取传感器数据、控制舵机等是经常需要用到的。而vscode arduino-snippets提供了这些常用代码片段的快速输入功能,开发者可以通过简单的键盘快捷键或者自动补全功能,快速输入所需的代码,极大地提高了编码的效率。 其次,该扩展提供了丰富的代码片段选择。在Arduino开发过程中,存在着许多常用的任务和模块,如控制LED灯、读取按钮状态、驱动电机等。vscode arduino-snippets提供了包含各种常用任务和模块的代码片段,开发者只需选择需要的代码片段并稍作修改,即可快速完成相应功能的开发,减少了开发者需要编写重复代码的工作量。 最后,该扩展还提供了代码片段的自定义功能。开发者可以根据自己的需求,自行添加、编辑和删除代码片段,以满足个性化的开发需求。这对于习惯使用特定代码结构的开发者来说尤为重要。 综上所述,vscode arduino-snippets扩展是一个非常有用的工具,它通过提供常用代码片段、节省编码时间、提高开发效率等功能,帮助开发者更加便捷地进行Arduino项目的开发。无论是初学者还是经验丰富的工程师都可以从中受益,并更快地完成他们的工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值