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 * Link to the directory's index can be made with [Dir/] * 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 backlinks to the specified page. zk.zsh can be used to show what pages backlinks 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 (even an empty file), then it will be backlinked. $ 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 backlinks in them. Each directory will also contain index page with links to all existing pages in current directory and to subdirectories. If ZK_CACHE environment variable contains path to some directory, then it will keep caching information for speeding up the processes in it. Look for CACHE file for more information.