zk.zsh -- zettelkästen/wiki/static website helper/generator * Use plain text files. One file per note/record * Use CamelCase names, that are friendly with vi editor word boundary determination * You can safely place that notes in subdirectories hierarchy * Edit and view your notes from their root path (zettelkästen root). That way if you press "gf" on "Foo/Bar/Baz" word in Vim, then it will open Foo/Bar/Baz file in current window * Use expand("%:r") function to get current file path relative to the root * Place links to another notes inside square brackets. You can highlight them with: syntax region zkLink start="\[\S" end="\S]" highlight link zkLink String * Use Vim's filename completion (:help compl-filename) to complete directories and filenames in them * fzf (https://github.com/junegunn/fzf) related tools can be used to navigate among existing notes * Ordinary grep, git-jump or similar tools can be used to search and quickly open results in the editor The only thing Vim lacks there is ability to tell who backreferences to the specified page. zk.zsh can be used to show what pages backreferences to specified page and what pages are referenced by it: $ zk.zsh links some/page Another/Page SomePage $ zk.zsh backs some/page [...] That can be used to make categories and tags on notes. If note contains a link to category/tag, then it will be backreferenced. Currently it does not use any kind of database or cache. It parses all files every time. $ zk.zsh htmls path/to/dir Will convert all your notes to HTMLs with properly created links to other pages. It also will include all backreference links in them. Each directory will also contain Index page with links to all existing pages in current directory and to subdirectories.