抽认卡生成器。你不会忘记任何事...
项目描述
从文本文件(TSV 和 Markdown)生成 Anki 卡片。使用 Google 翻译从单词列表中自动创建卡片。
<中心>文本文件易于维护,而apkg
文件则不然。您可以轻松地将文本文件存储在git等版本控制系统中,这样您就可以轻松跟踪更改并与他人协作。
Mnemocards 带有一些预先设计的格式:
- 语言卡片(最后一张图片的第一行):专为学习语言而设计。有两种类型的语言卡:
- 词汇卡(右):以 2 种语言显示的卡,您的母语和您正在学习的语言。这种类型的卡片让您可以直接从谷歌翻译器自动生成发音音频。此外,如果您正在学习日语,您可以使用ふりがな(假名,汉字顶部的小平假名字符)!
- 表情卡(左):当你已经知道一门语言并想掌握它时,有时翻译成你的语言已经不够了,但你想用你正在学习的语言写句子,并用相应的语言解释你在学习。
- Markdown 卡片(第二行):从
*.cards
文件生成的卡片。此文件格式是专门为使用 Mnemocards 创建卡片而创建的。除了一对卡片的开始和结束标记之外,这些文件的语法是纯 Markdown。您可以在此类卡片中使用图像、乳胶和数学。 - 自动生成的卡片(下图):这些卡片是从一个简单的文件中全自动生成的,
*.txt
其中包含您所学语言的单词(或短语)列表。使用谷歌翻译将每个单词翻译成您自己的语言,然后使用 词汇卡进行格式化模板。每张卡片都会包含您在 Google 翻译页面上看到的所有内容 - 单词本身、主要翻译、其他同义词翻译、发音、定义(以原始单词的语言,带有例句)。对于某些单词(和大多数短语),谷歌翻译会缺少一些项目,但只有一个主要翻译。此外,您可以生成发音音频 - 无论在 Google 翻译页面上具有文本发音的单词如何,它都会起作用,并且也可以为短语生成。如果您从日语单词和短语创建自动生成的卡片 - 您也可以自动生成假名!
目录
要求
- PyAudio 是 Python 依赖项之一,需要安装
PortAudio-dev。在类 Ubuntu 系统(仿生)中使用
apt install portaudio19-dev=19.6.0-1build1
. 也许该软件包的任何其他版本都可以正常工作,但我正在使用的那个版本没有问题。如果您有任何问题,请删除该版本并尝试使用最后一个版本。 - Python 3和
pyproject.toml
. 你至少需要pip>=19
. - 如果你想自动导入生成的 apkgs,你应该安装Anki。
- 如果你想从你的存储库或 gist 生成卡片,你应该安装Git。将其安装在类似 Ubuntu 的系统中
apt install git
。此外,为了使用 GitHub API,您应该有一个文件和 API 密钥以及 gists/repository 权限。只有私有仓库才需要仓库权限。
安装
使用 PyPi 包pip
:
pip install -U pip # pip >= 19 is needed
pip install mnemocards
Mnemocards 使用Poetry进行打包和依赖管理,所以如果你想.whl
从源代码生成一个文件,你所要做的就是:
poetry build
然后你应该能够在任何 Python 环境中安装轮文件
pip>=19
:
pip install dist/*.whl
如果您想贡献或开发,请像在任何其他 Python 项目中一样使用 Poetry。
:warning: 请记住至少有 19 版本的pip
.
如果您不想安装软件包并设置所有需要的环境,请考虑使用 Docker 的选项。阅读本 README 的Docker 部分以了解更多信息。
生成卡片
进入该examples/
目录并执行下一行,生成*.apkg
该目录和所有子目录下的所有文件。
$ mnemocards generate -r .
Building ./computer_science/cards_config.json
Building deck: Computer Science ID: 3778079933
Building ./japanese/cards_config.json
Creating audio file ./japanese/media/hiragana/10091493812914340822.mp3
Creating audio file ./japanese/media/hiragana/7304217433350980427.mp3
Creating audio file ./japanese/media/hiragana/3595385396154511079.mp3
Creating audio file ./japanese/media/hiragana/5000408949304965326.mp3
Creating audio file ./japanese/media/hiragana/2088116759824648408.mp3
Creating audio file ./japanese/media/katakana/13050069045466478331.mp3
Creating audio file ./japanese/media/katakana/4834734646036555229.mp3
Creating audio file ./japanese/media/katakana/4275246117432970461.mp3
Creating audio file ./japanese/media/katakana/8563378359496393897.mp3
Creating audio file ./japanese/media/katakana/10683512746176998599.mp3
Building deck: Japanese Scripts ID: 46741143
Building ./english/cards_config.json
Building deck: English ID: 376026414
Building ./gtrans_generated/from_words/cards_config.json
Creating audio file ./gtrans_generated/from_words/.media/16602724546385148562.mp3
Creating audio file ./gtrans_generated/from_words/.media/5309234024643684554.mp3
Creating audio file ./gtrans_generated/from_words/.media/16025915470194576015.mp3
Creating audio file ./gtrans_generated/from_words/.media/3362678031558458662.mp3
Building deck: English-Spanish googletranslated ID: 2639255077
Building ./gtrans_generated/from_tsv/cards_config.json
Creating audio file ./gtrans_generated/from_tsv/.media/9906647659348914100.mp3
Creating audio file ./gtrans_generated/from_tsv/.media/93519578040143984.mp3
Creating audio file ./gtrans_generated/from_tsv/.media/17049437411425550802.mp3
Creating audio file ./gtrans_generated/from_tsv/.media/8896291257694557922.mp3
Creating audio file ./gtrans_generated/from_tsv/.media/933277714999002525.mp3
Building deck: Japanese-English googletranslated ID: 2732900318
Writing packages to a file...
$ ls
computer_science cs.apkg english english.apkg gtrans_generated gtrans_generated_from_tsv.apkg gtrans_generated_from_words.apkg japanese japanese.apkg
现在您*.apkg
在此目录中有 5 个文件,您可以手动或使用 Mnemocards 将它们导入 Anki(请参阅导入部分)。在生成过程中,为日文卡座创建了 10 个音频文件,为从 word 文件生成的英语-西班牙语卡座创建了 4 个音频文件,从 tsv 文件生成了另外 5 个用于日英卡座的音频文件。这些音频文件来自谷歌翻译。如果再次重复该命令,则不会再次下载音频,因此将新词添加到词汇表的过程会更快。
Mnemocards 命令附带您可以阅读添加--help
到任何命令的文档。例如,如果您想查看可以与generate
命令一起使用的所有选项,只需执行:
$ mnemocards generate --help
usage: mnemocards generate [-h] [--config-file CONFIG_FILE] [--recursive]
[--output-dir OUTPUT_DIR]
DATA_DIR
positional arguments:
DATA_DIR Directory with the configuration and text data to use
for generating the Anki cards.
optional arguments:
-h, --help show this help message and exit
--config-file CONFIG_FILE, -f CONFIG_FILE
Configuration file to search in the DATA_DIR.
--recursive, -r Search recursively for configuration files in the
given DATA_DIR.
--output-dir OUTPUT_DIR, -o OUTPUT_DIR
Output directory where the packages are going to be
saved. Current directory by default.
Anki*.apkg
文件的生成过程基于配置文件的使用。默认情况下,配置文件被称为cards_config.json
. 示例中有五种不同,cards_config.json
每个目录中都有一种(computer_science/cards_config.json
、english/cards_config.json
、
和
)japanese/cards_config.json
gtrans_generated/from_tsv/cards_config.json
gtrans_generated/from_words/cards_config.json
该命令中-r
使用的选项generate
指示 Mnemocards 递归搜索那些配置文件。如果您只想生成japanese.apkg
使用
mnemocards generage japanese
或移入examples/japanese
并在那里执行mnemocards generate .
。
配置文件cards_config.json
配置文件包含要构建的包数量、卡组数量、卡组配置和数据的输入源(TSV 文件和 Markdown 文件)。
最基本的配置文件是:
{
"packages": [
{
"name": "APKG_filename",
"decks": [
{
"id": "ad054cdc-160b-4b77-a8a5-4da79fe5d8a5",
"name": "Deck name",
"src": [
{
"type": "markdown",
"file": "my_file.cards"
}
]
}
]
}
]
}
每个配置文件可以生成一个或多个*.apkg
包。每个包可以包含一个或多个甲板。每个卡片组可以包含一个或多个源文本文件。
建议指定一个牌组 ID,否则将使用牌组名称的哈希,这意味着如果名称更改,该牌组将被 Anki 视为新牌组,失去任何学习进度。
除了卡片组 ID、名称和源文件之外,您还可以指定卡片组配置。看看这个例子:
{
"id": "e9a0b7ba-641a-4af6-8631-be9854a4e9d8",
"name": "My deck name",
"config": {
"id": "65bcc65b-b4de-4ce4-b5c1-a73a2f64b82d",
"name": "My deck name (Configuration)",
"timer": 1, # Active timer
"maxTaken": 30, # Max seconds taken by the timer
"new": {
"bury": true, # Bury related new cards
"initialFactor": 1500, # Initial ease factor
"perDay": 5, # Number of new cards per day
"delays": [1, 10, 1440, 4320, 10080], # Learning steps in minutes
},
"lapse": {
"leechAction": 1 # Mark leech cards. Set to 0 to suspend.
}
}
}
请注意,添加到某些属性右侧的注释不是有效的 JSON 语法,它们仅在本教程中添加。您可以在 Ankidroid 文档中阅读所有可以使用的甲板配置选项。
该src
属性应该至少有一个文件,以便为该套牌生成一些卡片。
type
并且file
是两个必需的属性。根据类型,您可以添加更多属性。
markdown
类型
{
"type": "markdown",
"file": "math.cards",
"show_tags": true,
"card_properties": {
"tags": ["math"]
}
}
除此之外type
,file
您还可以添加:
show_tags
. 此标志设置为 true 将显示在markdown 卡片标题中的fromcards_config.json
和 from属性的卡片标签顶部(如 *.cards 格式部分所述)。 默认为假。tags
card_properties
. 应用于此文件中所有卡片的属性。例如:使用此属性可以避免在该文件内的所有卡片中设置标签。tags
. tag 属性是目前唯一可用的属性。它是一个标签数组。即使您只指定一个标签,您也应该使用一个包含一个元素的数组。
vocabulary
类型
{
"type": "vocabulary",
"file": "hiragana.tsv",
"header": true,
"pronunciation_in_reverse": false,
"card_color": "#33AA33",
"furigana": false,
"audio": {
"lang": "ja",
"media_dir": "media/hiragana"
},
"card_properties": {
"tags": ["japanese", "hiragana"]
}
},
header
. TSV 文件的第一行是标题行,因此将被跳过。pronunciation_in_reverse
. 默认情况下,逆向显示词汇卡时,不显示发音。如果您想要发音,请将此选项设置为 true。一旦你按下显示答案按钮,它就会显示出来。card_color
. 十六进制的卡片背景颜色。furigana
. 如果您正在学习日语,也许您想在卡片中使用假名(汉字上的小平假名字符)。如果要使用它们,请将此标志设置为 true,默认为 false。在您的 TSV 文件中,您的注音假名必须写在括号之间,并且在汉字之前有一个空格。例如,日[に] 本[ほん] 語[ご]
。audio
. 如果你想生成你正在学习的语言的音频文件,你应该在这里指定语言。lang
. 用于使用 ISO 639-2 生成这些文件的语言。您可以在 Wikipedia 中找到所有语言的 ISO 639-2 表。如果在谷歌翻译中没有发音,这是行不通的。media_dir
. 存储音频文件的目录。第一次生成包后,将创建此文件夹并填充所有音频文件。如果你不删除这个文件夹,下次使用 Mnemocards 会快很多,因为它已经生成了所有的音频文件。
card_properties
与 Markdown 卡片中的含义相同。
expression
类型
{
"type": "expression",
"file": "expressions.tsv",
"header": true,
"card_color": "#AA3333",
"card_properties": {
"tags": ["english", "expressions"]
}
}
header
,card_color
与card_properties
词汇卡中的含义相同。
autogenerate
类型
{
"type": "autogenerate",
"file": "words.txt",
"pronunciation_in_reverse": true,
"card_color": "#f5f5f5",
"lang": {
"original": "en",
"translation": "es"
},
"one_translation": false,
"audio": true,
"furigana": false,
"furigana_type": "hepburn",
"card_properties": {
"tags": ["english","spanish", "autogenerated" ]
}
}
file
.
此类型用于从文件中的单词列表自动生成卡片*.txt
。该文件应每行包含一个单词或短语,没有分隔符,例如行尾的.
或,
。
这种类型也可用于从自动生成*.tsv
的文件中生成卡片 - 有关如何生成 TSV 文件的说明,请阅读该部分Autogenerate TSV files with maketsv command
lang
.
您应该在此处指定自动翻译的语言。
语言代码列表可在此处获得original
. 文件中单词语言的语言代码。translation
. 您的语言的语言代码。
one_translation
.
如果您想生成每个单词只有一个翻译的卡片,请使用此标志。否则卡片将提供替代翻译(如果在谷歌翻译中可用)
。默认情况下为 false。furigana
.
此标志的工作方式与vocabulary
类型相同,但会自动生成假名。
此标志仅在lang:original
设置为日语 (ja
) 时有效。
如果激活了假名,来自谷歌翻译的发音将从卡片中删除。
默认为假。furigana_type
.
您可以选择使用哪种音译类型来进行注音假名。hira
平假名(如果您跳过此标志,默认设置)、kana
片假名和罗马字的可用值hepburn
。audio
.
此标志的工作方式与类型略有不同vocabulary
,必须设置为 true 才能工作。默认为假。pronunciation_in_reverse
,card_color
,card_properties
与词汇卡中的含义相同。
:warning: 由于 Google Translate API 的限制,该程序每 3 分钟只能下载 25 个单词的翻译。如果您autogenerate
在超过 25 个单词的列表上使用类型,程序将每 25 个单词延迟 3 分钟,并且生成可能需要大量时间,具体取决于总单词数。
*.cards
文件格式
卡片具有以下语法:
<<<
header
===
title
---
body
>>>
标题部分包含有关卡片的一些元数据(ID 和标签),标题是卡片的前部,而隐藏部分的正文是在您按下Anki 上的Show Answer按钮时显示的。
标题部分使用YAML语法,标题和正文部分使用 Markdown 语法。请注意分隔符===
,并且---
是用于生成标题的合法 Markdown 语法,因此建议在标题和正文中使用#
and##
代替。
header 和 body 不是必需的,所以下一个例子也是一张卡片:
<<<
title
>>>
但是,强烈建议为您的卡提供 ID。如果没有使用 ID,则将使用标题的哈希作为 ID。这意味着如果更改标题,卡 ID 也会更改(标题很容易因为拼写错误或您希望对卡进行的未来改进而更改)。具有不同 ID 的卡片被 Anki 视为不同的卡片,因此您将有重复的卡片,新卡片将失去任何进度。请使用 ID。ID 在标题中给出,建议使用 GUID:
<<<
id: 07924f36-ccfa-4b72-ac21-11f8b151d42f
===
# Title
---
Body
>>>
您可以在标题中定义的另一个合法属性是标签。使用逗号分隔的列表,其中包含要分配给该卡的所有标签的名称:
<<<
id: 07924f36-ccfa-4b72-ac21-11f8b151d42f
tags: tag1,tag2,tag3
===
# Title
>>>
在标题或正文的任何部分使用使用美元(例如:)的内联数学公式$x^2$
和使用两美元(例如:)的多行公式。$$\sum_i x_i$$
您还可以使用<img>
标签将图像添加到卡片中。目前
不支持图像的 Markdown 语法。请注意,图像名称在 Anki 卡片组中的所有图像中应该是唯一的,因此请避免使用1.png
或之类的名称example.png
。
TSV 词汇文件
TSV 词汇文件应包含接下来的列。目前,列应该是给定的 order。
-
ID
. 唯一标识注释的字符。这个数字不仅在文件中而且在整个集合中都必须是唯一的,这就是为什么我们建议使用 UUID(字母数字字符序列,例如:64012c71-9aea-4622-aac7-2595d6798737)。拥有 UUID 是能够更新卡片(进行拼写更正或使用额外信息改进它们)并且不丢失进度的必要条件。如果您需要在第一次编写时为您的卡生成 UUID,请使用命令mnemocards id
-
YourLanguageWord
. 您想学习的单词,但使用您的母语或已知语言。 -
YourLanguageExplanation
. 任何额外的细节来帮助你得到你正在寻找的词。一个明显的使用示例是,当您必须解释一个在您的语言中没有直接翻译的词时,或者当您的语言中的翻译是一个具有多个含义的词时。例如:在日本的平薄物体中使用不同的数字,因此一枚的翻译显然是“一”,但要进行反向翻译,我们需要像“一,在计算平薄物体时”这样的澄清。 -
LanguageYouLearnWord
. 用您尝试学习的语言编写的单词。 -
LanguageYouLearnPronunciation
. 在这里写下你如何发音你正在学习的语言的单词。如果您选择生成带有发音的音频,音频将被放置在这里。 -
LanguageYouLearnExplanation
. 此解释将始终伴随您想学习的语言中的单词。它解释了这个词在写作中可以以哪些替代形式出现为同义词或变体。不要提供任何揭示单词含义的额外信息,因为它会出现在一些卡片的正面,您的目标是将翻译成您的语言。例如:英语“打,打人”到西班牙语“pegar,你也可以使用'golpear'”。 -
Tags
. 您在此处编写的标签将添加到cards_config.json
.
这就是卡片中字段的显示方式。前卡格式:
YourLanguageWord
YourLanguageExplanation
--- # After showing answer
LanguageYouLearnWord # After showing answer
LanguageYouLearnPronunciation # After showing answer
LanguageYouLearnExplanation # After showing answer
反转卡格式:
LanguageYouLearnWord
LanguageYouLearnPronunciation # After showing answer
LanguageYouLearnExplanation
--- # After showing answer
YourLanguageWord # After showing answer
YourLanguageExplanation # After showing answer
对于日语,cards_config.json
named
中有一个特殊的标志furigana
。如果将此标志标记为真,则正面的汉字将单独显示,而背面的汉字将显示假名。这使得LanguageYouLearnPronunciation
创建日文卡片时不需要该字段(当然,您始终可以在此处使用罗马字)。
maketsv
使用命令自动生成 TSV 文件
您可以将自动生成的*.tsv
文件用于autogenerated
卡片类型而不是*.txt
文件。如果您想在将它们收集到apkg
文件之前查看自动生成的卡片,请使用此选项。
要创建这样的文件,请移动到包含*.txt
要变成卡片的单词的文件所在的文件夹并执行命令mnemocards maketsv .
默认情况下,命令将搜索具有名称的文件words.txt
,但您可以将其指向任何带有附加参数的文件-w name_of_file.txt
。
默认情况下,该命令将假定文件中的单词是英语并将它们翻译成西班牙语。要更改语言对,请使用参数
-l lang_lang
,其中第一个lang
值是单词的语言,第二个
lang
值是您的语言。使用此页面中的语言代码
例如,将单词从日语翻译成英语的命令,收集在文件japanese.txt
中将如下所示:
$ mnemocards maketsv -l ja_en -w japanese.txt
生成的文件将具有基于语言对的名称,在示例中为ja_en.tsv
.
TSV 文件将具有与上述TSV 词汇文件相同的结构
。事实上,您可以使用带有
vocabulary
类型配置的 TSV 文件来构建套牌。但我建议将它们与autogenerate
类型配置一起使用,因为该文件将包含一些基本的 html,用于使卡片看起来像 Google 翻译网站。
生成 TSV 文件后,您可以手动调整列的值,然后将其用于生成卡组。
您可以通过使用访问maketsv
命令的完整帮助mnemocards maketsv -h
表达式 TSV 文件
与词汇 TSV 文件类似,表达式 TSV 文件包含: 目前,列应按给定顺序排列。
-
ID
唯一标识注释的字符。这个数字不仅在文件中而且在整个集合中都必须是唯一的,这就是为什么我们建议使用 UUID(字母数字字符序列,例如:64012c71-9aea-4622-aac7-2595d6798737)。拥有 UUID 是能够更新卡片(进行拼写更正或使用额外信息改进它们)并且不丢失进度的必要条件。如果您需要在第一次编写时为您的卡生成 UUID,请使用命令mnemocards id
-
Expression
. 您想学习的表达方式。 -
Explanation
. 如果需要,对表达式进行额外解释。 -
Meaning
. 表达式的含义。 -
Example
. 表达式的使用示例。 -
Tags
. 您在此处编写的标签将添加到cards_config.json
.
这种类型的笔记只有一张正面卡片。前卡:
Expression
Explanation
--- # After showing answer
Meaning # After showing answer
Example # After showing answer
当然,这些类型的卡片是为了学习一门新语言而创建的,但只要此处描述的字段符合您的目的,它们就可以用于任何其他目的。
将卡片导入 Anki
使用命令mnemocards import --help
获取有关导入*.apkg
文件的说明。
$ mnemocards import --help
usage: mnemocards import [-h] [--profile-name PROFILE_NAME]
[--collection-path COLLECTION_PATH]
apkgs [apkgs ...]
positional arguments:
apkgs List of packages to import.
optional arguments:
-h, --help show this help message and exit
--profile-name PROFILE_NAME, -p PROFILE_NAME
If your collection is in the default location
(`~/.local/share/Anki2/`) you can specify only the
profile name. You cannot use this option as the same
time as `-c`.
--collection-path COLLECTION_PATH, -c COLLECTION_PATH
Specify the full path of the collection file. If you
use this option with `-p` (profile name), the profile
name has preference over the full collection path.
导入*.apkg
文件需要关闭Anki,否则无法写入集合文件。请记住,您需要打开 Anki 并将集合与 Web Anki 同步,才能在所有设备中查看更新的集合。
Git实用程序
为了保证我的卡片安全并集中我的知识数据库,我添加了一些实用程序来mnemocards
同时克隆和推送许多Git存储库。
第一步是知道要克隆哪些存储库。我喜欢为我正在学习的每个主题创建一个新的私有存储库。例如:
- 日语:在我的个人资料下,我有一个名为
learning_japanese
. - 编程:我有一个名为
learning_programming
. - 等等...
我的目标是以一种简单的方式克隆所有这些存储库,并使它们非常易于访问,这样每当我想到我想记住的东西时,我就不会因为懒惰而推迟它。正如我一直在学习的那样,我有很多存储库。为了自动执行此任务,我创建了mnemocards github
命令。
执行下一个命令的结果是一个~/.mnemocards
文件,其中包含所有带有 Anki 卡的存储库的列表以及我希望克隆它们的 PC 中的本地路径。
$ mnemocards github -i "guiferviz/learning_([^ _]*)" -d ~/learning
... some output ...
$ cat ~/.mnemocards
{
"repos": [
[
"git@github.com:guiferviz/learning_japanese.git",
"~/learning/japanese"
],
[
"git@github.com:guiferviz/learning_programming.git",
"~/learning/programming"
]
]
}
要执行该命令,您需要一个包含 GitHub API 密钥的文件,该文件具有足够的权限来读取您的存储库。转到GitHub Tokens并生成一个具有读取存储库权限的新令牌。如果要读取私有存储库,请选择下一个权限:
如果您想使用该mnemocards github --gists
选项,即克隆 gists 而不是存储库,您的 GitHub API 密钥应该具有不同的权限。我不使用 gists,因为它们不允许提交目录,并且我想让我的图像井井有条。
您还可以~/.mnemocards
使用给定的示例手动创建文件并替换 URL 和本地路径。
手动创建或自动创建文件后,您可以使用下一个命令克隆所有存储库。如果您的 repo 已经被克隆,此命令还会从服务器中提取最后的更改。
mnemocards pull
要提交并推送存储库中的所有更改,请使用下一个命令。您的存储库中的所有内容都将被添加和提交,因此如果您不想包含所有文件,请在您的.gitignore
或手动推送所有存储库中添加排除模式。使用类似于“使用助记卡更新存储库”的默认提交消息进行提交。
mnemocards push
码头工人
一个Docker镜像可用,这样您就可以生成您的包,而无需在您的环境中安装 Mnemocards。目前你需要在本地安装Anki 。我为您构建的 Docker 映像已命名guiferviz/mnemocards
,可在Mnemocards Docker Hub 存储库中找到。阅读docker/
目录下的文档,了解如何执行镜像。
如果您想自己生成 Docker 镜像,您还将在docker/
目录中找到所有信息(Dockerfile
和构建命令)。
由于 Docker 镜像是在将新版本标签推送到 GitHub 存储库时自动生成的,因此使用 Docker 是在不同版本的 Mnemocards 之间切换的一种非常方便的方式。
VIM 用户
我是一个顽固的 VIM 用户,因此我创建了一个vim_syntax/cards.vim
语法文件。它不是太花哨,但它看起来比使用 Markdown 语法更好。
使用 Markdown 语法:
使用我自己的 Cards 语法:
在我的UltiSnips 片段中,我有一个可以生成具有唯一 ID、标题和正文的新卡片。
snippet card "Create a new card" b
<<<
id: `!p if not snip.c: snip.rv = get_uuid()`
===
# ${1}
---
${2}
>>>
endsnippet
get_uuid
函数定义为:
def get_uuid():
"""Get an UUID string. """
import uuid
return str(uuid.uuid4())
我还使用Markdown Preview插件,这样我就可以在不生成包的情况下查看我的卡片的外观。它的*.cards
格式并不完美,但总比没有好:)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。