4 个版本 (2 个重大更改)
使用旧的 Rust 2015
0.3.0 | 2022 年 3 月 12 日 |
---|---|
0.2.0 | 2020 年 6 月 8 日 |
0.1.1 | 2020 年 6 月 4 日 |
0.1.0 | 2020 年 6 月 3 日 |
#815 在 科学
150KB
786 行
Zettels
Zettels 是一个命令行工具,实现了 Niklas Luhmann 的 "Zettelkasten" 系统。它旨在为那些想用他们喜欢的文本编辑器编辑笔记的人设计。
它使用 libzettels 作为后端。
如果你不知道什么是 Zettelkasten,请阅读下面的 "Zettelkasten 是什么?"
代码和 crate
Zettels 使用 Rust 编写。在这里找到代码和 crate
Zettels 仍处于 alpha 阶段,可能存在错误。
安装
1. 二进制包
请参阅 版本 页面。以下提供了二进制包:
- 64 位 GNU/Linux
- 32 位 GNU/Linux
- 64 位 Windows
还有 Debian 基础的 GNU/Linux 发行版的 *.deb 包(例如 Ubuntu)。
2. 通过 Cargo
Rust 的包管理器 cargo 提供了一种非常简单的安装方法
cargoinstall zettels
3. 从源代码
检出仓库或从 版本 下载源代码。如果你选择这种方式,我假设你知道你在做什么。
Zettels 做什么?
它旨在用于类似于 Niklas Luhmann 所使用的 "Zettelkasten"。Zettels 是一个用于索引 Markdown 文件(你的 zettels)的工具。它接受一个包含 YAML 元数据块(如 pandoc 所定义)的 Markdown 文件(可能位于子目录中)的目录(你的 Zettelkasten 的根目录)。
Zettels将这些文件(您的笔记)之间关系的信息汇总到一个可查询的索引中。为了填充这个索引,Zettels做了两件事
- 它检查YAML元数据块的
title
、keywords
和followups
字段。
---
title: 'Example Zettel'
keywords: [example, question]
followups: [file.md, subdir/anotherfile.md, ../yetanotherfile.md]
foo: 'Potentially more data ignored by libzettels.'
...
- 它解析Markdown文档主体中的内联样式链接(如
[example](afile.md)
)并提取这些链接的目标。
生成的索引包含元数据和超链接的目标。
示例文件
如果您想查看一些示例文件以获得更好的理解,Zettels有一个子命令可以为您生成一些
- 仅示例笔记。对用户来说,可能最有用的是查看笔记文件的外观。
zettels examples --bare
- 示例笔记和配置文件,可能仅对开发者有用
zettels examples --with_config
- 包含配置文件和索引的示例笔记
zettels examples --with_index
您可以通过使用带有选项-c
并供应生成配置文件的路径来运行该配置。
什么是Zettelkasten?
"Zettel"是德语中“笔记”或“纸条”的意思,“Kasten”是“盒子”的意思。想想老式的图书馆目录。
显然,这个软件工具并不是一个纸条盒子。然而,尼克拉·卢曼以一种非常具体的方式在他的学术工作中使用了这样的盒子。
以下是对卢曼的Zettelkasten系统的精彩介绍:丹尼尔·吕德克的演讲幻灯片:卢曼的Zettelkasten思维及其技术实现简介
卢曼本人的话:通过纸条盒通信("Kommunikation mit Zettelkästen"的翻译)。
如果你会说德语,还有更多
- 卢曼,尼克拉(1981):通过纸条盒通信。经验报告。在H. Baier / H.M. Kepplinger / K. Reumann(编),公众舆论和社会变革。奥普拉登:西德意志出版社。第22-28页
- 丹尼尔·吕德克:卢曼在电子Zettelkasten中的工作方式
- 托马斯·施莱辛格:使用尼克拉·卢曼的Zettelkasten保存和整理知识
- 比勒费尔德大学:视频 - 纸条系统的洞察 - 尼克拉·卢曼的Zettelkasten之谜
替代方案
如果您正在寻找一个图形用户界面,将卢曼的想法集成到软件中的整体方法,我可以推荐丹尼尔·吕德克的Zettelkasten(sjPlot/Zettelkasten)。
Zettel格式
Zettels不需要您的Markdown文件有元数据块。但为了真正有效地成为您的Zettelkasten的一部分,一个包含title
、keywords
和followups
条目的YAML元数据块是必要的。
---
title: 'Example Zettel'
keywords: [example, question]
followups: [file.md, subdir/anotherfile.md, ../yetanotherfile.md]
...
如果没有这样的元数据,Zettels将在索引中用适当的“空”值替换它
title
:“无标题”关键词
: "[]"后续内容
: "[]"
您可以使用...
结束元数据块,也可以使用---
。
---
title: 'Example Zettel'
keywords: [example, question]
followups: [file.md, subdir/anotherfile.md, ../yetanotherfile.md]
---
实际上,一个zettel文件可能包含多个YAML块。但是Zettels只会解析第一个。元数据块可能包含各种其他条目(例如 author
,date
)——可能用于其他工具,如pandoc——但这些其他条目会被Zettels忽略,不会成为Zettels索引的一部分。
要手动在zettels之间建立链接,请使用markdown超链接的“内联语法”。
[link text](url)
zettel文件之间的链接应该是相对链接。对于followups
中的条目也是如此。
使用方法
tl;dr
- 运行
zettels setup
进行配置 - 运行
zettels -h
查看使用信息
搜索和检查
查询Zettelkasten有两种主要方式。
1. 搜索
搜索是一种找到Zettelkasten条目的方法。Zettels实现了搜索zettel的title
和keywords
字段。仅仅为了完整性起见:Zettels不提供搜索zettel内容的功能。为此,有专门的工具,如grep
或ripgrep
。
搜索关键字-k
,--keywords
zettels -k foo
搜索标题-t
,--title
或-e
,--exacttitle
zettels -t foo
两者可以组合使用
zettels -k foo -t bar
结果可以限制为与所有查询匹配的zettel:-a
,--all
zettels -k foo -t bar -a
当然,这也适用于多个搜索词。
zettels -k foo bar -a
2. 检查
检查zettel之间的关系是查询Zettelkasten的另一种方式。检查需要“范围”,即要检查的zettel列表。这个范围可以由用户指定,也可以是搜索结果,或者是整个Zettelkasten。
对于检查“后续”关系,一个关键概念是“序列”。当一个zettel指定另一个为后续时,它们形成一个序列。进一步的后续扩展该序列,或者可能分支成子序列。
显示由SCOPE指定的zettel所属的序列-s
,--sequences
zettels -s file1.md
显示由SCOPE指定的序列中的所有zettel-z
,--zettels
zettels -z file1.md
显示属于由SCOPE指定的序列的zettel,以及SCOPE的所有祖先-f
,--family
zettels -f file1.md
显示属于由SCOPE指定的序列的zettel,以及SCOPE的所有祖先,以及这些祖先的所有后代-w
,--wholefamily
zettels -w file1.md
对于检查“链接”关系,可以检查SCOPE的出站链接-l
,--links
zettels -l file1.md
或入站链接-i
,--incoming
zettels -i file1.md
两者都可以
如前所述,搜索的结果可以用作检查的范围。因此,这将显示所有标题中有“foo”这个词的zettel的所有出站链接。
zettels -t foo -l
依赖关系
~8–18MB
~251K SLoC