Obsidian 插件:Easy Typing
插件名片
概述
输入时,按照你的设定自动格式化一些输入的符号,简化输入繁琐步骤。
原文出处
下面自述文件的来源于 Readme
Readme(翻译)
下面是 easy-typing-obsidian 插件的自述翻译
Obsidian Easy Typing
[中文 | English]
该插件旨在提供更好的 Obsidian 打字体验。插件的功能包括在编辑过程中自动格式化文本和符号编辑增强。自动格式化文本可以标准化文档的格式,美化文档的外观。编辑增强则优化用户的编辑体验。
自动文本格式化提供了首字母大写的功能。此外,自动文本格式化可以根据用户设置的规则,在输入过程中自动为每行的特定部分添加空格,例如中英文之间的空格、文本与英文标点之间的空格、文本与内联公式/内联代码/维基链接之间的空格、文本块与用户定义的正则匹配块之间的空格等。从而标准化文档的格式,美化文档的外观。
自动文本格式化默认在编辑过程中立即生效。您也可以在设置中关闭自动文本格式化的选项。您还可以使用插件命令来格式化当前文章、当前行或当前选定区域的全文。
编辑增强。例如,连续输入两个 ’¥’ 将变为 $$
,将光标定位在中间,输入两个 【
将变为 [[|]]
。在许多情况下,中文用户无需切换输入法即可获得流畅的写作体验!编辑增强功能包括:1. 符号的自动配对/删除;2. 选定文本的符号编辑增强;3. 连续的全角符号转换为半角符号;4. Obsidian 语法相关的编辑增强。该插件还支持可自定义的转换规则,具有很高的可玩性。
注意:该插件是为 OBSIDIAN 中的中英文混合输入而设计的,对其他语言可能无效。
核心特点
1. 文本自动格式化
自动文本格式化提供了将首字母大写的能力。此外,自动文本格式化可以根据用户设置的规则,在输入过程中自动在每行的特定部分添加空格,例如中英文之间的空格、文本和英文标点之间的空格、文本和内联公式/内联代码/维基链接之间的空格、文本块和用户定义的正则匹配块之间的空格等。
自动文本格式化的总开关如上所示。关闭后,在输入过程中文本将不会自动格式化。但是,它不会影响符号编辑的增强功能,也不会影响插件的内置命令:格式化全文、格式化当前行/当前选定区域。
1.1 自动大写
该插件提供了在输入法为英文输入模式时自动将首字母大写的功能,即每个句子的开头字母会自动大写。在设置选项卡中,您可以选择仅在输入时自动大写或全局生效。当选择“仅在输入时”模式时,可以撤销自动大写操作,并且撤销后的字母不会被大写。
1.2 文本和标点之间的自动空格
文本和标点之间的自动空格将智能地在其他文本和英文标点之间添加空格。
1.3 不同内联块的空格策略
该插件将每个文本行分成几个块:文本块、内联公式块、内联代码块、链接块和用户定义的正则匹配块。可以在设置选项卡中设置块之间的空格策略。
有三种空格策略可供选择:1. 无要求;2. 软空格;3. 严格空格。默认设置为软空格。
空格策略 | 说明 |
---|---|
无要求 | 该块与其他块之间没有空格要求 |
软空格 | 该块可以通过软空格与其他块分隔开,即标点符号也可以作为软空格。 |
严格空格 | 该块必须通过空格与其他块分隔开。 |
例如
some text,[[markdown link|双向链接]]还有`inline code`。其他文本。
该插件将上述 markdown 分成 5 个块:
- 文本块:some text,
- 链接块:[[markdown link|双向链接]]
- 文本块:还有
- 内联代码块:`inline code`
- 文本块:。其他文本
根据默认设置,链接块与其他块之间必须有一个软空格,并且链接块与左侧文本块之间的相邻内容是英文逗号,不符合软空格的要求,因此在文本块 1 和链接块 2 之间添加一个空格(如果是中文逗号,则符合软空格的要求)。
链接块 2 和文本块 3 之间的相邻内容是 还
,不符合软空格的要求。但是,因为链接文本的空格策略设置为智能空格模式,插件将根据链接块的显示内容(这里是链接的别名:双向链接
)与右侧文本进行智能空格处理。然后,块和文本块 3 之间的两个相邻内容是 接还
,两个汉字之间不需要空格,因此在 wiki 链接块 2 和文本块 3 之间不添加空格。
文本块 3 和内联代码块 4 之间的相邻字符是 有
,不符合内联代码块的空格策略要求,因此在文本块 3 和内联代码块 4 之间添加一个空格。
内联代码块 4 和文本块 5 之间的相邻字符是 。
,符合内联代码块的空格策略要求,因此在内联代码块 4 和文本块 5 之间不添加空格。
因此,最终格式化的文本如下
some text, [[markdown link|双向链接]]还有 `inline code`。其他文本。
1.4 用户自定义正则表达式匹配块
在某些情况下,用户不希望格式化特定形式的内容,例如 {}
内容或 <>
内容。该插件可以通过用户自定义的正则表达式来禁止对特定形式的内容进行格式化。
此外,每个自定义的正则匹配块可以设置其左右空格策略。
三种空格策略由三个符号表示,不需要空格(-)、软空格(=)、严格空格(+)。
有关正则表达式的更多详细信息,请参见 《阮一峰:正则表达式简明教程》。
1.4.1 自定义正则表达式语法
在自定义正则表达式的文本编辑区域中,每一行字符串都是一个正则规则,其格式如下:
<正则表达式>|<左空格策略><右空格策略>
1.4.2 自定义正则表达式规则示例
例如,默认正则表达式块的第二行如下所示:
#[\u4e00-\u9fa5\w\/]+|++
首先,最后两个字符是正则块的左右空格策略。这里,++
表示左右空格策略是严格的空格。
倒数第三个字符必须是 |
,用于将正则表达式部分与左右空格策略部分分隔开,以使其更容易识别。
剩下的字符串就是正则表达式本身,#[\u4e00-\u9fa5\w\/]+
,这个正则表达式可以匹配以 #
键开头,符合 [\u4e00-\u9fa5\w\/]
的正则表达式的一个或多个字符。这些字符包括中文字符、字母、数字、下划线和 /
。
简单来说,就是用于识别 Obsidian 中的标签。
Obsidian 的标签需要在标签两侧添加空格(不允许使用中文标点,必须是空格),否则它们将无法被识别为标签。
上面的两个 Gif 演示了在 Obsidian 中使用自定义正则表达式和输入标签之前和之后的区别。
1.4.3 更多自定义常规应用
例如,默认设置中的以下自定义常规规则用于识别网络链接(也包括黑曜石链接)
(https?:\/\/|ftp:\/\/|obsidian:\/\/|zotero:\/\/|www.)[^\s()《》。,,!?;;:“”‘’\)\(\[\]\{\}']+|++
以下规则用于识别 Obsidian 的引用语法块。
\[\!.*?\][-+]{0,1}|-+
<.*?>|--
用于识别双尖括号块,以确保其内部文本不受自动格式化的影响。如果您使用 Template 插件创建模板,则需要使用类似 <% tp.file.cursor() %>
的语法。启用此自定义规则可以防止其内容被错误地添加空格(因为内部的 .
会被视为句子的结尾,所以该插件会自动在 .
和后面的文本之间添加空格)。
我期望自定义正则表达式规则能够满足不同用户的个性化需求,并且还需要探索更多的用法~~
2 编辑增强
编辑增强功能包括:1. 符号的自动配对/删除;2. 对所选文本的符号编辑增强;3. 连续的全角符号转换为半角符号;4. Obsidian 语法相关的编辑增强。
2.1 基本编辑增强
基本编辑增强功能基于 Obsidian 和 Markdown 语法提供了一些编辑增强功能。
以下是插件中所有基本编辑的增强规则:
[['··|', '`|`'], ["`·|`", "```|\n```"],
["【【|】", "[[|]]"], ['【【|', "[[|]]"], ['¥¥|', '$|$'], ['$¥|$', "$$\n|\n$$"], ["$$|$", "$$\n|\n$$"], ['$$|', "$|$"],
[">》|", ">>|"], ['\n》|', "\n>|"], [" 》|", " >|"], ["\n、|", "\n/|"], [' 、|', " /|"]]
- 第一条规则:将··|转换为`|`
- 第二条规则:将`·|` 转换为```\n|```
- 第三和第四条规则:输入【两次将转换为[[|]]
- 倒数第二条规则表示输入的句子开头,将被转换为斜杠/(以适应 Obsidian核心插件 Slash命令)
- 以此类推
2.2 符号自动配对/删除
2.2.1 符号自动配对
符号自动配对功能是指,当输入左半部分的符号时,插件会自动完成符号对的右半部分内容。
例如,如果输入《|,将会得到《|》(竖线 | 表示光标位置)。
该插件默认的匹配符号如下:
["【】", "()", "《》", "“”", "‘’", "「」", "『』"]
由于括号的自动配对功能((
、[
、{
)已经被 Obsidian 支持(编辑器→自动配对括号
),因此该插件不会重复提供此功能。
2.2.2 成对符号删除
当光标左右两侧有成对的符号时,如果向后删除,整个成对的符号将自动删除。
例如:【|】按下退格键,你将得到 |(|表示光标位置)
该插件支持自动配对和删除上述所有成对的符号。此外,该插件还提供了快速配对和删除公式块、代码块和高亮块符号的功能。规则如下:
[["$|$", "|"], ['```|\n```', '|'], ['==|==', '|'], ['$$\n|\n$$', "|"]]
2.3 当文本被选中时的编辑增强功能
有时候我们想要将文本的某些部分转换为维基链接、代码块或公式块。当文本被选中时,我们需要输入“$”符号将选中的部分转换为公式块。然而,如果此时使用中文输入法,选中的文本将被替换为“¥”符号。这个插件将识别这些情况并实现用户的意图。
|选中的文本|输入|结果|
|:-----|:----|:-----|
|文本|【|[文本]|
|x+y|¥|$x+y$|
|一些代码|·|` 一些代码`|
此外,在文本被选中时输入一些中文配对符号,也会在选中的文本左右两侧添加配对符号。
选中的文本 | 输入 | 结果 |
---|---|---|
文本 | 《 | 《文本》 |
文本 | “ 或 ” | “文本” |
文本 | ‘ 或 ’ | ‘文本’ |
文本 | < | <文本> |
文本 | ( | (文本) |
2.4 将全角符号转换为半角符号
内置的转换规则如下:
[["。。|", ".|"], ["!!|", "!|"], [";;|", ";|"], [",,|", ",|"],
["::|", ":|"], ['??|', '?|'], ['、、|', '/|'], ['((|)', "(|)"], ['((|', '(|)'],
["》》|", ">|"], ["《《|》", "<|"], ['《《|', "<|"]]
例如,上述第一个规则表示连续两个中文句号将变成英文句点。第二个规则表示连续输入两个中文感叹号将变成一个英文感叹号,依此类推。
2.5 用户定义的转换规则
在这里,我借鉴了 aptend/typing-transformer-obsidian 的转换规则的想法,使得该功能更加可玩。感谢 aptend/typing-transformer-obsidian!
2.5.1 使用选定文本的自定义转换规则
在设置栏中分别输入触发符号和转换后的左右字符串,然后点击右侧的添加规则按钮生成用户定义的规则。
例如,在输入区域输入 -
、~~
、~~
,然后点击添加按钮,您可以得到如上图所示的第一个规则。
设置规则后,选择文本并输入 -
,您将得到 ~~selected~~
。
通过点击编辑或删除,可以修改已添加的规则。
选定文本的自定义转换规则优先级高于插件内置的转换规则。
2.5.2 删除时的自定义转换规则
对于删除规则,您需要输入删除前的文本状态和按下删除键后的文本状态。使用 | 来表示光标位置。删除前后的文本状态必须有 | 来表示光标位置。您可以在光标的任一侧添加文本。
内置的符号配对删除功能实际上添加了一系列的删除规则。例如,《》
的配对删除规则如下
点击右侧的添加按钮来添加规则。每个用户定义的删除规则也可以进行编辑和删除。
删除规则仅在使用退格键删除光标前的文本时生效。当文本被选中或使用删除键向前删除文本时,规则不生效。
用户定义的删除规则优先于插件内置的删除规则。
2.5.3 输入时的自定义转换规则
用户定义的输入转换规则与删除转换规则类似,只是在字符输入时生效。
如上图所示,我添加了一个自定义转换规则。当我输入 :)
时,插件会将其转换为 😀。这种转换可以撤销。
在输入时,用户定义的转换规则的优先级低于插件内置的转换规则(例如自动符号配对和连续全角符号转换为半角符号)。
更新日志
完整的更新日志请参见 ./changelog.md。
致谢
- https://github.com/artisticat1/obsidian-latex-suite
- https://github.com/aptend/typing-transformer-obsidian
- https://marcus.se.net/obsidian-plugin-docs/
支持
如果你喜欢这个插件并想要表示感谢,你可以在这里给我买杯咖啡!
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。