Vimwiki 是一个 Vim 中的个人 wiki -- 一个有它自己的高亮语法和链接的文本文件。 使用 vimwiki 你可以: - 组织笔记和想法 - 管理待办事项列表 - 写文档 - 写日记 - 导出HTML文件
如果.vimrc 文件中没有如下的设置,Vimwiki 将不能正常工作: set nocompatible filetype plugin on syntax on
[n]\ww or :VimwikiIndex --- 打开第n个wiki(默认g:vimwiki_list中的第一个) [n]\wt or :VimwikiTabIndex --- 新标签中打开第n个wiki(默认打开g:vimwiki_list中的第一个) \ws or :VimwikiUISelect --- 列出所有wiki项目,选择序号打开相应wiki [n]\wi or :VimwikiDiaryIndex --- 打开第n个wiki日记索引(默认g:vimwiki_list中的第一个) [n]\w\w or :VimwikiMakeDiaryNote --- 打开第n个wiki当日日记(默认g:vimwiki_list中的第一个) [n]\w\t or :VimwikiTabMakeDiaryNote --- 新标签中打开第n个wiki当日日记(默认打开g:vimwiki_list中的第一个) [n]\w\y or :VimwikiMakeYesterdayDiaryNote --- 打开第n个wiki昨天日记(默认g:vimwiki_list中的第一个)
可以在.vimrc文件中重新定义映射:
:nmap <Leader>wc <Plug>Vimwiki2HTML
或者在.vim/ftplugin/vimwiki.vim重定义:
:nmap <silent><buffer> <Leader>wc <Plug>Vimwiki2HTML
后者的优点是重定义的映射只对vimwiki有效。
\wh or :Vimwiki2HTML --- 当前wiki文件转化成HTML文件 \whh or :Vimwiki2HTMLBrowse --- 当前wiki文件转化成HTML文件 \w\i or :VimwikiDiaryGenerateLinks --- 更新日记索引(只在日记索引文件中有效) <CR> or :VimwikiFollowLink --- 创建/追踪wiki链接 <S-CR> or :VimwikiSplitLink --- 水平分割窗口创建/追踪wiki链接(有些终端中无效,需重映射) <C-CR> or :VimwikiVSplitLink --- 垂直分割窗口创建/追踪wiki链接(有些终端中无效,需重映射) <C-S-CR>,<D-CR> or :VimwikiTabnewLink --- 新标签中创建/追踪wiki链接(有些终端中无效,需重映射) <Backspace> or :VimwikiGoBackLink --- 返回上层wiki <Tab> or :VimwikiNextLink --- 跳转到当前wiki文件下一个链接 <S-Tab> or :VimwikiPrevLink --- 跳转到当前wiki文件上一个链接 \wd or :VimwikiDeleteLink --- 删除当前wiki文件 \wr or :VimwikiRenameLink --- 重命名当前wiki文件 = or :VimwikiAddHeaderLevel --- 增加标题等级 - or :VimwikiRemoveHeaderLevel --- 减小标题等级 + or :VimwikiNormalizeLink:VimwikiNormalizeLink --- 创建链接/增加链接描述 <C-Space> or :VimwikiToggleListItem --- List项目中复选框选中开关,项目没有复选框时则添加复选框(一般在TODO List中) gl<Space> or :VimwikiRemoveSingleCB --- 去除List项目中复选框 gL<Space> or :VimwikiRemoveCBInList --- 去除List所有同级项目复选框 glx or :VimwikiToggleRejectedListItem --- 关闭List项目复选框[✘] gln or :VimwikiIncrementListItem --- 增加List项目复选框完成进度标志[ ][.][o][O][✔] glp or :VimwikiDecrementListItem --- 降低List项目复选框完成进度标志[ ][.][o][O][✔] gll or :VimwikiIncreaseLvlSingleItem --- 增加List项目等级 gLl or :VimwikiIncreaseLvlWholeItem --- 增加List项目及其子项目等级 glh or :VimwikiDecreaseLvlSingleItem --- 降低List项目等级 gLh or :VimwikiDecreaseLvlWholeItem --- 降低List项目及其子项目等级 glr or :VimwikiRenumberList --- List项目重新编号 gLr or :VimwikiRenumberAllLists --- List项目及其子项目重新编号 gl* or :VimwikiChangeSymbolTo * --- 普通行变成*List项目*List项目变成普通行(会和vim中的搜索快捷键*冲突) gL* or :VimwikiChangeSymbolInListTo * --- List项目标识变成* gl# or :VimwikiChangeSymbolTo # --- 普通行变成#List项目#List项目变成普通行 gL# or :VimwikiChangeSymbolInListTo # --- List项目标识变成# gl- or :VimwikiChangeSymbolTo - --- 普通行变成-List项目-List项目变成普通行 gL- or :VimwikiChangeSymbolInListTo - --- List项目标识变成- gl1 or :VimwikiChangeSymbolTo 1 --- 普通行变成1.2.3.List项目1.2.3.List项目变成普通行 gL1 or :VimwikiChangeSymbolInListTo 1 --- List项目标识变成1.2.3. gla or :VimwikiChangeSymbolTo a --- 普通行变成a)b)c)List项目a)b)c)List项目变成普通行 gLa or :VimwikiChangeSymbolInListTo a --- List项目标识变成a)b)c) glA or :VimwikiChangeSymbolTo A --- 普通行变成a)b)c)List项目A)B)C)List项目变成普通行 gLA or :VimwikiChangeSymbolInListTo A --- List项目标识变成A)B)C) gli or :VimwikiChangeSymbolTo i --- 普通行变成i)ii)iii)List项目i)ii)iii)List项目变成普通行 gLi or :VimwikiChangeSymbolInListTo i --- List项目标识变成i)ii)iii) glI or :VimwikiChangeSymbolTo I --- 普通行变成I)II)III)List项目I)II)III)List项目变成普通行 gLI or :VimwikiChangeSymbolInListTo I --- List项目标识变成I)II)III) gqq/gww :VimwikiChangeSymbolInListTo --- 表格格式化 <A-Left> :VimwikiTableMoveColumnLeft --- 表格当前列移到左边 <A-Right> :VimwikiTableMoveColumnRight --- 表格当前列移到左边 <C-Up> :VimwikiDiaryPrevDay --- 打开已经存在的上一天的日记 <C-Down> :VimwikiDiaryNextDay --- 打开已经存在的下一天的日记 <2-LeftMouse> --- 创建/追踪wiki链接(即双击左键 g:vimwiki_use_mouse=1) <S-2-LeftMouse> --- 水平窗口创建/追踪wiki链接(g:vimwiki_use_mouse=1) <C-2-LeftMouse> --- 垂直窗口创建/追踪wiki链接(g:vimwiki_use_mouse=1) <RightMouse><LeftMouse> --- 返回上层wiki(g:vimwiki_use_mouse=1)
<CR> --- 跳到表格的下一行单元格,到达末尾时会新建一行 <Tab> --- 跳到表格的下一个临近单元格,到达末尾时会新建一行 <CR> --- 光标在非空List项目中时,跳到下一行并新建项目;光标在空List项目时,一直按回车知道项目标识消失,一般用来结束列表 <S-CR> --- 禁止自动生成列表项目,用于创建多行列表项 <C-T> or :VimwikiIncreaseLvlSingleItem --- 增加List项目等级 <C-D> or :VimwikiDecreaseLvlSingleItem --- 降低List项目等级 <C-L><C-J> or :VimwikiListNextSymbol --- 切换下一个List项目标识(-,1,*,I),a)) <C-L><C-K> or :VimwikiListPrevSymbol --- 切换上一个List项目标识(-,a),I),*,1) <C-L><C-M> or :VimwikiListToggle --- 删除/添加List项目标识
ah 两标题之间的内容,包含标题和末尾空行 ih 两标题之间的内容,包含标题和不包含末尾空行 a\ 表格中的一个单元格,包含两边的| i\ 表格中的一个单元格,不包含两边的| ac 表格中的一列,包含两边的| ic 表格中的一列,不包含两边的| al 列表中的一个项目,及其子项目 il 列表中的一个项目 用法: vah 选中两标题之间的内容,包含标题和末尾空行 dah 删除两标题之间的内容,包含标题和末尾空行 yah 复制两标题之间的内容,包含标题和末尾空行 cah 修改两标题之间的内容,包含标题和末尾空行(效果同dah后进入Insert模式)
:VimwikiIndex --- 打开当前wiki的索引文件 :VimwikiTabIndex --- 新标签中打开当前wiki的索引文件 :VimwikiUISelect --- 通过wiki列表打开选中的wiki :VimwikiDiaryIndex --- 打开当前wiki的日记索引文件 :VimwikiMakeDiaryNote --- 打开当前wiki的当天日记 :VimwikiTabMakeDiaryNote --- 新标签中打开当前wiki的当天日记 :VimwikiMakeYesterdayDiaryNote --- 打开当前wiki的昨天日记
:VimwikiFollowLink --- 跟踪/创建链接 :VimwikiGoBackLink --- 返回上层wiki文件 :VimwikiSplitLink --- 水平分割窗口跟踪/创建链接 :VimwikiVSplitLink --- 垂直分割窗口跟踪/创建链接 :VimwikiTabnewLink --- 新标签中跟踪/创建链接 :VimwikiNextLink --- 查找当前页下一个链接 :VimwikiPrevLink --- 查找当前页上一个链接 :VimwikiGoto linename --- 跳转到/创建指定链接 :VimwikiDeleteLink --- 删除当前wiki文件 :VimwikiRenameLink --- 重命名当前wiki文件 :Vimwiki2HTML --- 当前wiki文件转化成HTML,支持用户自定义转化脚本(参见vimwiki-option-custom_wiki2html) :Vimwiki2HTMLBrowse --- 当前wiki文件转化成HTML,并在浏览器中打开 :VimwikiAll2HTML --- 所有wiki文件转化成HTML :VimwikiToggleListItem --- List项目中复选框选中开关,项目没有复选框时则添加复选框(一般在TODO List中) :VimwikiToggleRejectedListItem --- 关闭List项目复选框[✘] :VimwikiListChangeLevel CMD --- 改变单行列表项目的嵌套等级(CMD是>>,<<)或者项目标识(CMD是*,#,1,-) :VimwikiSearch,:VWS /pattern/ --- 当前wiki的所有文件中搜索,使用:lopen :lnext :lprevious查看结果 :VimwikiBacklinks,:VWB --- 当前wiki的所有文件中搜索链接,使用:lopen :lnext :lprevious查看结果 :VimwikiTable [cols] [rows] --- 创建表格(默认2行5列) :VimwikiTableMoveColumnLeft,:VimwikiTableMoveColumnRight --- 左右移动列表的一列 :VimwikiGenerateLinks --- 插入所有wiki文件的链接到当前缓冲区(TODO) :VimwikiDiaryGenerateLinks --- 更新日记索引(只在日记索引文件中有效) :VimwikiDiaryNextDay --- 打开已经存在的下一天的日记 :VimwikiDiaryPrevDay --- 打开已经存在的上一天的日记 :VimwikiTOC --- 创建或更新当前的wiki文件的目录 :VimwikiCheckLinks --- 搜索所有wiki文件,检查链接的目标文件以及外部链接文件是否确实存在.并检查索引文件到所有的wiki文件是否可达,并在quickfix窗口中显示结果 :VimwikiRebuildTags --- 重建所有更新wiki文件的标签属性文件(TODO) :VimwikiRebuildTags! --- 同VimwikiRebuildTags(TODO) :VimwikiSearchTags ---在当前wiki的页面中查找给定标签的所有位置(TODO) :VimwikiGenerateTags tagname1 tagname2 ... --- 创建/更新指向示例对象的所有标签的预览(无参数,则输出所有标签,参见vimwiki-build-tags)
与vimwiki交互的函数(把大部分命令用函数替换,将是未来的发展趋势) 提示:该部分尚不稳定,以后极有可能得到改善 键映射定义用法: nnoremap <C-K> :call vimwiki#base#function_name(arg1, arg2)<CR> 例如追踪链接的函数: vimwiki#base#follow_link({split}, {reuse}, {move_cursor}) 参数{split}可以有以下值: 'nosplit' 当前窗口打开链接 'vsplit' 垂直窗口打开链接 'hsplit' 水平窗口打开链接 'tab' 新标签中打开链接 参数{reuse}=1,而且{split}='vsplit'或者{split}='hsplit'时,将会在一个可能已经存在的分割窗口中打开链接,而不是新建一个分割窗口 参数{move_cursor}=1,则光标移到打开链接的窗口,否则不会移动 例如<CR>快捷键的映射 nnoremap <CR> :call vimwiki#base#follow_link('nosplit', 0, 1)<CR>
*粗体文本* _斜体文本_ ~~删除线~~ `代码` 文本^上角标^ 文本,,下角标,,
wiki内链接: [[link]] --- 简单链接 [[link|description]] --- 带有描述的链接 [[subdir/project]] --- 子目录链接 [[../index]] --- 返回主索引文(相对路径) [[/index]] --- 返回主索引文件(绝对路径:wiki目录视为根目录) wiki间链接: 日记链接: 锚点: 原始统一资源标识符URLS: 外部文件:
Vimwiki可以根据标题和预格式化块来折叠或显示大纲。另外也可以折叠列表子项目。折叠默认关闭,需要设置g:vimwiki_folding 如果g:vimwiki_folding='list',则 zM --- 折叠当前列表项目及其子项目 zr --- 每执行一次,展开一层,直至展开所有子项目
%title Title of the page --- 页面标题 %nohtml --- 禁止wiki文件转化成HTML %template name --- 将已有HTML模板应用到wiki页面,参见vimwiki-option-template_path %date [2017-07-08] --- wiki文件日期,该值可用于HTML模板,省略参数则使用转化日期,详见vimwiki-option-template_path
使用:VimwikiTable命令创建一个2行5列的表格 | | | | | | |---|---|---|---|---| | | | | | | 插入模式按<CR>/<Tab>可一次编辑单元格,推出插入模式时,表格自动对齐 如果想要缩进表格,只需缩进第一行,然后使用gqq/gww对齐表格 当在Normal模式修改表格后,也可以使用gqq/gww对齐表格
日记功能可帮助你记录日常笔记,你能够非常容易地将分类的日记添加至Vimwiki中, 只要按下\w\w,即可以当前的日期为名来创建新的笔记, 这个新创建的笔记文件,会保存在diary目录中。 当在日记索引文件中时,使用:VimwikiDiaryGenerateLinks or \w\i 更新日记索引,内容如下: = Diary = == 2011 == === December === * [[2011-12-09]] * [[2011-12-08]] 如果想要修改月份的显示形式,参考g:vimwiki_diary_months 日历集成: 如果你安装了Calendar.vim插件,就可以利用该插件创建日记,使用命令:Calendar,并在相应的日期上敲击<CR>即可创建日记。 获取地址:http://www.vim.org/scripts/script.php?script_id=52 相应的github地址:https://github.com/mattn/calendar-vim 可以使用g:vimwiki_use_calendar开关日历的使用
每个 标题,标签,粗体文本 都可以作为锚点,跳转到锚点的使用格式是: [[file#anchor]] 例如Todo.wiki文件有以下内容: = My tasks = :todo-lists: == Home == - [ ] bathe my dog == Work == - [ ] beg for *pay rise* == Knitting club == === Knitting projects === - [ ] a *funny pig* - [ ] a *scary dog* 如果想从index.wiki文件直接跳到Knitting projects,可以使用: [[Todo#Knitting projects]] 也可利用粗体字跳转到列表项目: [[Todo#funny pig]] 也可直接跳到标签: [[Todo#todo-lists]] 如果文件中有多个名字/属性都相同的锚点,可以使用由层级标题组成的长格式引导到目的锚点,标题之间用#分开: [[Todo#My tasks#Knitting club#Knitting projects#scary dog]] 如果你不想逐个输入,可以在写完[[Todo#后按<C-X><C-O>,会自动列出所有可选锚点。 单个文件之间的跳转,可以省略文件字段,如: [[#pay rise]]
%toc占位符已经弃用,可以使用:VimwikiTOC命令自动在文件顶部生成目录,也可在文件任何位置写如下内容: = Contents = 然后执行:VimwikiTOC命令更新目录,如果设置了vimwiki-option-auto_toc=1,则会自动更新 如果不想目录显示成Contents,可以通过g:vimwiki_toc_header设置成想要的文字内容 另外可以利用tagbar插件显示侧边栏目录 Tagbar插件:http://majutsushi.github.io/tagbar/ 然后下载https://raw.githubusercontent.com/vimwiki/utils/master/vwtags.py 根据文件中的指示完成配置即可。