vim-zettel 文档中文翻译
zettelkasten 是一种旨在通过文件的链接建立知识的链接的笔记方法。目前已经有许多基于该方法实现的应所有,比如 Obsidian、Logseq 之类的。如果你的主力编辑器时 vim,同时希望尝试该方法,则可以通过 vim-zettel 插件进行尝试,本文是对 vim-zettel 文档的粗浅翻译,如有疏漏可以通过邮件(jferroal@gmail.com)联系我。
2022-10-07
英文原文请在 vim 中使用
:help vim-zettel
介绍(ntro)
这是一个实现了 https://zettelkasten.de/ 中描述的 zettelkasten 笔记法的 Vim 插件。是 Vimwiki 的扩展插件,支持 Vimwiki 和 Markdown 语法。
主要功能:
- 可自定义的文件名(日期和时间、标题、连续编号、随机字符)
- 无论实际文件名如何,链接始终显示标题
- 使用 fzf 进行全文搜索和超链接支持
- 从 LaTeX 或 Markdown 文档中搜索 Zettelkasten 并将选定的注释插入到文档
- 模板
- 自动更新标签索引
- 反向链接
安装(Installation)
默认使用 Silver Searcher 作为搜索工具。
Using Vundle:
Plugin 'vimwiki/vimwiki' Plugin 'junegunn/fzf' Plugin 'junegunn/fzf.vim' Plugin 'michal-h21/vim-zettel'
配置(Configuration)
因为 Vim-Zettel 是基于 Vimwiki 工作的,所以先配置 Vimwiki。如果您只有一个 wiki,则可以直接使用 Vim-Zettel,无需进一步配置。但是,如果你想要自定义 Vim-Zettel 配置或有多个 wiki,则必须进行如下的配置。
" Settings for Vimwiki
let g:vimwiki_list = [\
{'path':'~/scratchbox/vimwiki/markdown/','ext':'.md',\ 'syntax':'markdown'}, \
{"path":"~/scratchbox/vimwiki/wiki/"} \
]
你可以在 .vimrc 文件中配置以下选项以使 Vim-Zettel 符合你的喜好:
g:zettel_options
g:zettel_format|
g:zettel_default_mappings|
g:zettel_fzf_command|
g:zettel_fzf_options|
g:zettel_backlinks_title|
g:zettel_backlinks_title_level|
g:zettel_unlinked_notes_title|
g:zettel_unlinked_notes_title_level|
g:zettel_generated_tags_title|
g:zettel_generated_tags_title_level|
你还可以提供用于创建新 zettels 的自定义模板。参见模板。
命令(Commands)
安装 Vim-Zettel 后,使用
:VimwikiIndex
Vim-Zettel 在 Vimwiki 之上实现了以下命令。
- 命令——它将创建一个名为 %y%m%d-%H%M.wiki 的新 wiki 文件(可以使用
:ZettelNew
变量更改文件名格式)。该文件使用如下模板g:zettel_format
%title Note title %date current date
其中 title 是
:ZettelNew
如果您使用
Vim-Zettel
z
(1) 如果当前目录在
g:vimwiki_list
g:zettel_options
g:vimwiki_list
g:vimwiki_list
with the given order.
- 命令:使用 fzf 执行全文搜索。它保留打开页面的历史记录。
:ZettelOpen
- :使用 fzf 选择笔记并将它们插入当前文档。可以使用
:ZettelInsertNote
键选择多个笔记。它们会使用 Pandoc 自动转换为文档语法格式。<TAB>
- 命令:将当前文件的内容转换为 zettel。这是一个在 Vim 中可用的全局命令。警告:此命令具有破坏性。仅用于临时文件。您可以在查看要转换为 zettel 的文件时从 vim 中运行它,或者从命令行运行它:
:ZettelCapture
vim -c ZettelCapture filename
如果有多个 wiki,可以指定 wiki 编号(从 0 开始)。默认打开第一个声明的 wiki:
vim -c "ZettelCapture 1" filename
- 命令:为在 Vimwiki 不活动时可以运行的命令选择默认 wiki,例如
:ZettelSetActiveWiki
或:ZettelOpen
。:ZettelInsertNote
- 命令:插入链接到当前笔记的笔记列表。
:ZettelBackLinks
- 命令:插入无法从索引文件访问的笔记列表(您可以使用
:ZettelInbox
命令打开索引文件)。:VimwikiIndex
- 命令:在当前页面中插入所有 wiki 页面的列表。需要更新的标签数据库(
:ZettelGenerateLinks
)。:VimwikiRebuildTags!
- 命令:在当前页面中插入标签列表和使用这些标签的页面。需要更新的标签数据库(
:ZettelGenerateTags
)。只支持 :tag1:tag2 形式的 Vimwiki 样式标签(在 Markdown 模式下也能工作)。:VimwikiRebuildTags!
- 命令:搜索你的 zettelkasten 的内容并在当前的笔记中插入一个指向所选 zettel 的链接。在插入模式下映射到
:ZettelSearch
。[[
- 命令:从最近打开的笔记列表中选择。
:ZettelSelectBuffer
- 命令:使用 fzf 选择笔记并使用实际选择的文本作为标题。
:ZettelTitleSelected
- 命令:将当前 zettel 的格式化链接复制到寄存器。在正常模式下映射到
:ZettelYankName
。T
有用的 Vimwiki 命令 ~
- 命令:显示链接到当前页面的文件
:VimwikiBacklinks
- - 显示没有其他文件链接的文件
:VimwikiCheckLinks
键盘映射(Mappings)
Vim-zettel
g:zettel_default_mappings
- 可视模式下的“z”命令:使用选定的文本作为笔记标题创建一个新的 wiki 文件; — [[ 插入模式下的命令:创建一个笔记的链接。使用 fzf 进行笔记搜索;
- g[ 用于可视模式下的选择命令:创建一个到注释的链接,以选定的文本作为标题;
- 正常模式下的 T 命令:将当前笔记文件名和标题作为 Vimwiki 链接;
- 正常模式下的 gZ 命令:将光标下的文件路径替换为 Wiki 链接。
或者可以通过映射
ZettelNew
nnoremap <leader>zn :ZettelNew<space>
变量(Variables)
g:zettel_options
g:vimwiki_list
g:zettel_options
let g:zettel_options = [\
{}, \
{ \
"front_matter" : [["tags", ""], ["type","note"]], \
"template" : "~/mytemplate.tpl" \
} \
]
front_matter
第二项可以包含 funcref。配置后每次使用此
front_matter
function! s:insert_id()
if exists("g:zettel_current_id")
return g:zettel_current_id
else
return "unnamed"
endif
endfunction
let g:zettel_options = [{"front_matter" :
[["tags" , ":hello:"],
[ "id" , function("s:insert_id")]]
}]
你可以通过将
disable_front_matter
template
默认情况下,Vim-Zettel 以 YYMMDD-HHMM 的形式创建文件名。可以使用 g:zettel_format 变量更改此格式。
strftime()
也可以使用其他格式字符串:
- %title -- insert sanitized title
- %raw_title -- insert raw title
- %file_no -- sequentially number files in wiki
- %file_alpha -- sequentially number files in wiki, but use characters instead of numbers
- %random -- use random characters. Their number can be configured using option, eight is used by default.
g:zettel_random_chars
若要要使用基于当前时间和注释标题的文件名,可以使用以下格式:
let g:zettel_format = "%y%m%d-%H%M-%title"
对于顺序命名的文件,请使用:
let g:zettel_format = "%file_no"
如果生成的文件名存在(若使用默认格式且在一分钟内同时创建了两个笔记时),则会在文件名中添加字母后缀(比如
200622-1114
200622- 1114a
Vim-Zettel 遵循 vimwiki 定义的
link_space_char
:h links_space_char
你可以使用 Vimwiki 变量
g:vimwiki_markdown_link_ext
.md
z
T
let g:vimwiki_markdown_link_ext = 1
如果未提供标题,则用于新 Zettel 文件名中的“%title”格式字符串的文本。
用于新 zettel 前端的日期元数据的日期格式。需要由
strftime()
For example:
let g:zettel_date_format = "%y/%m/%d"
可以通过将 g:zettel_default_mappings 变量设置为 0 来更改 Vim-Zettel 使用的默认映射,然后提供自己的键映射。下面的代码可以作为开始的模板。
let g:zettel_default_mappings = 0
" This is basically the same as the default configuration
augroup filetype_vimwiki
autocmd!
autocmd FileType vimwiki imap <silent> [[ [[<esc><Plug>ZettelSearchMap
autocmd FileType vimwiki nmap T <Plug>ZettelYankNameMap
autocmd FileType vimwiki xmap z <Plug>ZettelNewSelectedMap
autocmd FileType vimwiki nmap gZ <Plug>ZettelReplaceFileWithLink
augroup END
Vim-Zettel 在搜索文件时默认使用 Silver Searcher(ag)。 g:zettel_fzf_command 可用于覆盖默认设置。
" command used for VimwikiSearch
" default value is "ag". To use other command, like ripgrep, pass the
" command line and options:
let g:zettel_fzf_command = "rg --column --line-number --ignore-case --no-heading --color=always "
请注意,如果要使用 Ripgrep,则需要一定要添加
--column
用于
fzf
let g:zettel_fzf_options = ['--exact', '--tiebreak=end']
用作生成的索引部分的文本。
let g:zettel_generated_index_title = "Generated Index"
生成生成的索引部分时要使用的标题等级。
let g:zettel_generated_index_title_level = 1
用作反向链接部分的文本。
let g:zettel_backlinks_title = "Backlinks"
生成反向链接部分时要使用的标题级别。
let g:zettel_backlinks_title_level = 1
用作未链接注释部分的文本。
let g:zettel_unlinked_notes_title = "Unlinked Notes"
生成未链接的注释部分时要使用的标题级别。
let g:zettel_unlinked_notes_title_level = 1
用作生成标签部分的文本。
let g:zettel_generated_tags_title = "Generated Tags"
生成已生成的标签部分时要使用的标题级别。
let g:zettel_generated_tags_title_level = 1
用于生成链接的格式。如果你对默认格式不满意,可以更改此变量。
let g:zettel_link_format="[%title](%link)"
%random
ZettelSelectBuffer
%filename
%title
let g:zettel_bufflist_format = "%filename - %title
模板(Templates)
可以使用模板填充具有基本结构的新笔记。可以使用 g:zettel_options 变量声明模板:
let g:zettel_options = [{"template" : "~/path/to/mytemplate.tpl"}]
模板样例:
= %title = Backlink: %backlink ---- %footer
以 % 开头部分表示可填充的便利店。支持的变量有:
- %title - 新笔记的标题 - %id - 新笔记的文件名 - %backlink - 到父笔记的反向链接 - %date - 新笔记的日期和时间。格式基于 变量。 - %footer - 来自父笔记页脚的文本。页脚通过水平线 (----) 与正文分开。它可以包含一些笔记共享的信息。例如,关于出版物的注释可以共享该出版物的引用。
g:zettel_date_format
其他的还有所有在
front_matter
相关包(Related Packages)
以下软件包也可以配合 Vimwiki 及 Vim-Zettel 一起使用:
- Notational FZF - 带有预览窗口的快速搜索笔记。要在 Zettelkasten 中搜索,请将以下变量设置为 .vimrc 中 Zettelkasten 目录的路径:
let g:nv_search_paths = ['/path/to/zettelkasten/dir']
- Vimwiki-sync - 自动提交 wiki 中的更改并将它们与外部 Git 存储库同步。