1 个不稳定版本

0.1.0 2021年11月19日

6#note-taking

MIT 协议

20KB
515

Zettl

⚡️一种闪电般的笔记维护方式,可以建立笔记之间的连接。

asciicast

(我知道它坏了,我太懒了,不想重录)

安装Zettl

要安装Zettl,您需要安装Rust工具链。您可以使用rustup安装Rust。安装Rust后,您可以从crates.io安装zettl。

$ cargo install zettl

使用Home Manager

Zettl现在作为Nix flake提供,包含一个home-manger模块。由于zettl目前不是Nixpkgs的一部分,您需要将zettl覆盖添加到您的nixpkgs。

如果您使用flake管理您的NixOS配置,您可以在您的flake.nix中添加以下内容

  inputs = {
   zettl.url = "github:hedonhermdev/zettl";
  };

  ...
  pkgs = import nixpkgs {
    inherit system;
    config = {
      allowUnfree = true;
    };

    overlays = [
      zetl.overlays.default
    ];
  };

要将它添加到您的家庭程序中,您可以这样做

programs.zettl = {
  enable = true;
  settings = {
    zettl = {
      zettlDir = "${config.home.homeDirectory}/kasten";
      editorCmd = "${pkgs.nvimPacked}/bin/nvim";
      author = "Tirth Jain";
      name = "zettelkasten";
    };
  };
};

初始化Zettl

您需要创建一个目录来存储您的笔记。您可以通过设置变量$ZETTL_DIRECTORY来告诉zettl使用此目录。请注意,zettl将使用此目录进行所有操作,因此您可能需要在您的.bashrc(或您的.zshrc)中设置此变量。

$ mkdir ~/kasten
$ echo "export ZETTL_DIRECTORY=~/kasten" >> .bashrc

初始化zettl会在您的根目录中创建一个.zettl目录。

$ zettl init

配置Zettl

您可以通过在配置文件中设置值来更改配置选项。

$ vim $ZETTL_DIRECTORY/.zettl/config.yml

目前,zettl支持以下选项

---
name: My Zettelkasten
author: Me
editor_cmd: vim
editor_args: []
indexes: true
graph: true

一个自定义配置的例子将如下所示

---
name: My Zettelkasten
author: Tirth Jain
editor_cmd: nvim
editor_args:
  - "+Goyo"
  - "+Limelight"
indexes: true
graph: true

使用Zettl

初始化Zettl后,您可以从任何地方使用它来编写笔记。

# Create a new fleeting note. These are like daily notes.
$ zettl fleet
# Create a new note. This will be created in notes/some-idea.md. 
$ zettl note some-idea
# Create a new note in a category. This will be created in notes/project1/some-idea.md.
$ zettl note project1/some-idea
# Listing all notes.
$ zettl list
# Listing all fleeting notes.
$ zettl list -f

以下命令将在您指定的编辑器中打开一个Markdown文件。

图表和索引

Zettl在每个目录中创建_index.md文件以索引您的笔记。您可以通过在配置目录中设置以下内容来关闭此功能。

indexes: false

fleets/_index.md文件看起来可能如下所示

---
title: Fleets Index
author: Tirth Jain
created: "2021-04-29 11:16:25"
---

# Fleets Index

- [[fleets/2021-04-28]]
- [[fleets/2021-04-29]]

同样,Zettl创建一个.graph.json文件来跟踪笔记之间的连接。您可以使用您选择的可视化器来可视化此图表。我更喜欢3d-force-graph。请注意,连接使用[[mediawiki]]链接格式。

要关闭此图表生成

graph: false

要手动创建图表和索引,您可以运行

$ zettl graph
$ zettl index

笔记的保存方式

Zettl会将您的笔记保存为Markdown文件。使用zettl几天后,您的zettl目录将看起来大致如下

/Users/hedonhermdev/kasten
├── _index.md
├── fleets
│   ├── 2021-04-28.md
│   ├── 2021-04-29.md
│   └── _index.md
└── notes
    ├── SDNs
    │   ├── _index.md
    │   └── p4-notes.md
    ├── _index.md
    ├── devops
    │   ├── _index.md
    │   ├── git-server-setup.md
    │   └── homegrown-autodeployment.md
    ├── git
    │   ├── _index.md
    │   ├── cli.md
    │   ├── error-handling.md
    │   ├── git-in-rust.md
    │   ├── implementation.md
    │   └── internal-objects.md
    ├── how-to-zettel.md
    ├── vim
    │   ├── _index.md
    │   ├── autocmds.md
    │   └── vimrc-for-servers.md
    ├── workflow.md
    ├── zettl
    │   ├── _index.md
    │   ├── philosophy.md
    │   └── roadmap.md

集成

虽然zettl目前还没有程序化的方式来支持集成(但很快会有!),以下是我能想到的一些集成方式

  • 使用git进行版本控制
$ cd $ZETTL_DIRECTORY
$ git init
$ git add .
$ git commit -m "Saving notes"
  • 使用Hugo将您的笔记发布为静态网站。这个主题也可以处理mediawiki链接。
$ ln -s $ZETTL_DIRECTORY path/to/hugo/content
$ hugo serve
  • 使用fzf模糊查找笔记
# for notes
$ zettl note $(zettl list | fzf)

依赖项

约12-24MB
约320K SLoC