https://github.com/radiand/zettelkasten
Plaintext notetaking helper.
https://github.com/radiand/zettelkasten
cli notes nvim plaintext terminal vim zettelkasten
Last synced: 2 months ago
JSON representation
Plaintext notetaking helper.
- Host: GitHub
- URL: https://github.com/radiand/zettelkasten
- Owner: radiand
- Created: 2024-08-13T20:06:30.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2025-10-25T15:41:48.000Z (8 months ago)
- Last Synced: 2025-10-25T16:08:36.713Z (8 months ago)
- Topics: cli, notes, nvim, plaintext, terminal, vim, zettelkasten
- Language: Go
- Homepage:
- Size: 99.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
_zettelkasten_ – creating and managing plain text notes. 100% LLM-free code.
# Overview
Single note is just a header and text:
````
```toml
title = "This is your note"
timestamp = "2024-09-29T11:18:38+02:00"
uid = "20240929T091838Z"
tags = ["lang:en", "topic:demo", "whatever"]
referred_from = []
refers_to = []
```
...and here you write whatever you want. Markdown is encouraged, as all notes
are kept as .md files.
Notes are linked using their UIDs, like [this](20240101T010203Z) or
[[20240202T010203Z]]. Zettelkasten will automatically detect links and update
headers.
If your editor supports it, put .
````
`zettelkasten` command line application comes with commands:
- `$ zettelkasten init` to set things up for the first time,
- `$ zettelkasten new` to create new command,
- `$ zettelkasten link` to find references between notes and fill
`referred_from`, `refers_to` fields of the header,
- `$ zettelkasten commit` to `git commit` if you keep your notes
version-controlled.
# Try yourself
## Install
Currently, to install `zettelkasten` you need golang compiler. You distro likely
provides it in its repos.
After cloning this repository, `cd` into and run:
```bash
go install ./cmd/zettelkasten
```
If your OS is setup properly and your `PATH` is populated with `go` built
binaries, you can use `zettelkasten` in your terminal now.
## Initialize
To follow default settings and create configuration in
`$HOME/.config/zettelkasten/config.toml`, use:
```bash
zettelkasten init
```
Alternatively, you can use `-f ` to set where you want to store config
file. Remember that you will have to keep typing `-f` forever then.
## Your first note
To create new note with appropriate filename and header, in a directory defined
by configuration, use:
```bash
nvim $(zettelkasten new)
```
You are encouraged to create an alias for this or create new mapping in (n)vim
itself.
# Philosophy
- Note is a record of a thought, plan or goal. It may describe something you
have read, something you have seen or somewhere you have been to.
- Note is written the way it _could_ be published.
- You do not collect notes for just for data hoarding. You revisit, distill or
even remove notes.
- You do not strive for hierarchy. You link notes.
- To label notes, you use tags.
- To create collections, you use indices. E.g. "books", "travel", "ideas".
- Use plain text. It is searchable and it will last.
- Your notes are **you**. Do not let corporations read your mind. Do not store
them anywhere outside your PC unless you can safely encrypt them. Do not trust
any online services.
- Backup.
# (n)vim plugin
You can use any text editor, as long it can easily cooperate with `zettelkasten`
binary, i.e. you are able to define key mappings to create and search notes.
Just because I use `nvim`, I prepared dedicated plugin. To install it, use your
plugin manager, e.g. [`vim-plug`](https://github.com/junegunn/vim-plug):
```vim
Plug 'radiand/zettelkasten'
```
Currently it defines following mappings:
- `zk` to create new note (supports tab-completion of workspaces),
- `zf` to find notes (requires [fzf](https://github.com/junegunn/fzf)),
- `zg` to follow links (use when UID is under cursor).