Obsidian 插件:Jelly Snippets
插件名片
概述
一个简单的文本片段插件。
原文出处
下面自述文件的来源于 Readme
Readme(翻译)
下面是 jelly-snippets 插件的自述翻译
jelly-snippets
一个简单的 Obsidian.md 文本片段插件。
它是做什么的?
非常简单。你可能之前已经遇到过代码片段。
-
在设置选项卡中指定代码片段到替换的映射。
snippet. |+| replacement!
-
如果光标位于代码片段的末尾…
snippet.<光标在这里>
-
..然后触发代码片段转换…
snippet.<光标在这里 - 触发!>
-
..将用替换内容替换代码片段!
replacement!<光标在这里>
更详细地说:
代码片段在设置中的文本区域(如文件)中定义。每个代码片段有两个部分:lhs 和 rhs。
lhs(左侧)确定要替换的文本;rhs(右侧)确定要替换文本的内容。
自然地,有一个符号来分隔代码片段的这两个部分,称为代码片段部分分隔符:
|+|
,例如(两端有空格)。
lhs |+| rhs
因此,当您键入 lhs
并触发代码片段命令时,它将用 rhs
替换文本 lhs
。
而且,有一个符号来分隔代码片段列表中的每个单独的代码片段,称为代码片段分隔符:
-==-
,例如。
因此,如果您有以下代码片段文件:
lhs |+| rhs
-==-
superb |+| superbowls
那么您将有两个代码片段。如果您的分隔符仍然是 -==-
,并且您有以下文件:
lhs |+| rhs
superb |+| superbowls
然后键入 lhs
并触发代码片段命令将用以下内容替换 lhs
:
rhs
superb |+| superbowls
为什么?
我想制作一个通用的代码片段插件,它可以操作文本并按照我的需求工作。已经有一个现有的代码片段插件,Text Snippets 由 ArianaKhit 开发,但是这个插件的代码有点过时且有些复杂,而且似乎使用的是旧的 API。(顺便说一句,这是一个非常好的插件。)
我写这个插件的目标之一是按照 非官方文档 和纯 TypeScript 所描述的 API 编写一个简单的插件。我还希望使插件的核心功能更加灵活,尽管我还没有添加某些真正提供这种功能的特性。
另一个动机是我想制作一个可以输入我的个人笔记语法(称为 JellyNote)的插件;最初我打算编写一个完整的编辑器扩展,但最终我意识到我可以用代码片段来实现它。因此,只要我需要 JellyNote 语法,我就会为这个插件添加功能。
这个插件也让我想起了 LaTeX2Unicode,这是我在大学的前两年里广泛使用的一个 neovim 插件。我喜欢它,因为它可以在按下空格键时自动将 LaTeX 转换为 Unicode;就是这样,不需要按 Tab 键。
它后来被合并回 julia.vim。我最初并不打算编写一个可以提供这种功能的插件,但我想文本翻译的概念确实非常有用!
未来改进/待办事项
- 控制片段中的控制字符(例如空格,特别是换行符?当前片段在两端都被修剪;可能不应该修剪空格)
- 片段中的语义符号(例如光标之后去哪里?带有大括号的片段可能会受益于将光标放在内部…)
- 正则表达式功能
- 修复错误和审计?
- 添加换行符选项以使简单的片段易于创建而不是繁琐
- 在 Obsidian 插件存储库中执行 liamcain 建议的操作。(一半已完成)
其他注意事项
- 目前,代码片段的左侧(lhs)不能包含换行符。这种类型的代码片段将无法正常工作;它们会被注册,但永远不会触发。原因是因为我只在光标到行首的范围内搜索代码片段文本;这样做既高效又简单。要修复这个问题,我们需要从光标位置向后查找,并与代码片段的左侧进行匹配。可能不是一个难题,但考虑到这种用例相对较少(在我看来),我忽略了它。请提交一个问题报告。编辑:问题已经提交。是时候开始工作了。
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。