VimWiki插件入门
安装与配置
安装
下载安装文件vimwiki-N-N.vba.gz
直接在vim中打开该文件,执行以下命令安装:
:so %
解压完成后你可能还需要重建帮助文件索引。请执行
:helptags $VIMFILES/doc
其中$VIMFILES
就是您的vimfiles目录。这是需要在vimrc中定义的系统变量:
-
Windows下应该是:
$VIM/vimfiles
; -
Linux下是:
~/.vim/
如果vimrc没有显式指定,可以加上:
if has("win32") let $VIMFILES = $VIM.'/vimfiles' else let $VIMFILES = $HOME.'/.vim' endif
配置
" 官方建议 set nocompatible filetype plugin on syntax on " =========================== " " VimWiki " " =========================== " 多个wiki项目 let g:vimwiki_list = [{'path': '~/vimwiki/', \ 'path_html': '~/vimwiki/html/', \ 'template_path': '~/vimwiki/template/', \ 'template_default': 'template', \ 'template_ext': '.htm'} \,{'path': '~/workspace/study/vimwiki/', \ 'path_html': '~/workspace/study/vimwiki/html/', \ 'template_path': '~/workspace/study/vimwiki/template/', \ 'template_default': 'template', \ 'html_header': 'header.htm', \ 'html_footer': 'footer.htm', \ 'auto_export': 1, \ 'diary_link_count': 5, \ 'template_ext': '.htm'} \] " 是否在词条文件保存时就输出html这个会让保存大词条比较慢所以默认没有启用 " 有需要的话就把这一行复制到对应项目里去 " \ 'auto_export': 1, " 对中文用户来说,我们并不怎么需要驼峰英文成为维基词条 let g:vimwiki_camel_case = 0 " 标记为完成的checklist项目会有特别的颜色 let g:vimwiki_hl_cb_checked = 1 " 我的vim是没有菜单的,加一个vimwiki菜单项也没有意义 let g:vimwiki_menu = '' " 是否开启按语法折叠会让文件比较慢 "let g:vimwiki_folding = 1 " 是否在计算字串长度时用特别考虑中文字符 " let g:vimwiki_CJK_length = 1 " 指定可以用的html标签 let g:vimwiki_valid_html_tags='b,i,s,u,sub,sup,kbd,del,br,hr,div,code,h1' " 不列出来的,会作聪明地在你的链接后面再加上 .html let g:vimwiki_file_exts = 'c, cpp, wav, txt, h, hpp, zip, sh, awk, ps, pdf' " 如果生成HTML的目录下有手工hack的html文件,也会被无情的删除, " 选项配置用户html文件,不被自动删除。 let g:vimwiki_user_htmls = 'contact.html, canvas-1.html, html.html' map <F5> :Vimwiki2HTML<cr> map <S-F5> :VimwikiAll2HTML<cr>
具体配置参数解释
例子,目录结构如下:
对应的配置:
{'path': '~/workspace/study/vimwiki/', \ 'path_html': '~/workspace/study/vimwiki/html/', \ 'template_path': '~/workspace/study/vimwiki/template/', \ 'template_default': 'template', \ 'html_header': 'header.htm', \ 'html_footer': 'footer.htm', \ 'template_ext': '.htm', \ 'diary_link_count': 5, \ 'auto_export': 1 }
-
path
:指定wiki路径。是必须的,说明你想要把wiki条目存在哪个目录。 -
path_html
:制定生成的html路径,一些相关调用的css,js也都放在这里。默认是与path
同目录下的WIKIFOLDER_html
,其中WIKIFOLER
是你存放维基条目的文件夹名。 -
template_path
:是模板的路径。 -
template_default
:指定默认的模板名称。 -
template_ext
:指定模板的后缀名,建议把模板文件后缀采用htm
,既和生成的html
有所区分,又能保证语法高亮和各种ftplugin
可用。 -
html_header
:头部模板。 -
html_footer
:尾部模板。 -
diary_link_count
: :: 是指diary.wiki
里每行放多少个日志链接。 -
auto_export
:保存后自动生成html文件。如果文件大的话会比较慢。
综上,template_path/template_default.template_ext
就是模板了
基本操作
控制符<leader>
默认为反斜杠\
。
:h vimwiki
查看wiki的帮助。
项目操作
快捷键
-
\ww
打开 wiki首页 -
\wt
在标签页中打开wiki首页 -
[n]\ww
打开第 N 个 Wiki,如果没指定,则打开默认 Wiki -
[n]\wt
新标签页打开第 N 个Wiki -
\ws
打开 Wiki 列表并选择打开 -
\wr
重命名wiki文件 -
\wd
删除wiki文件
Golbal 命令
-
:VimwikiGoHome
-
:VimwikiTabGoHome
-
:VimwikiUISelect
Buffer 命令
-
:Vimwiki2HTML
-
:VimwikiAll2HTML
-
:VimwikiDeleteWord
-
:VimwikiDeleteWord
-
:VimwikiFollowWord
-
:VimwikiGoBackWord
-
:VimwikiNextWord
-
:VimwikiPrevWord
-
:VimwikiRenameWord
-
:VimwikiSplitWord
-
:VimwikiToggleListItem
-
:VimwikiVsplitWord
VimWiki语法
字体
代码 | 效果 |
---|---|
*bold*
|
bold |
_italic_
|
italic |
~~strikeout text~~
|
|
hello^super script^
|
hellosuper script |
hello,,sub script,,
|
hellosub script |
标题
= 标题一 = == 标题二 == === 标题三 === ==== 标题四 ==== ===== 标题五 ===== ====== 标题六 ======
快捷键:
-
=
升高标题级别(和+
是同一个键)。 -
-
降低标题级别。
目录与索引
-
%toc
自动生成的目录 -
%title
指定HTML文档的title -
%nohtml
不为某条目生成HTML。即使单独执行:Vimwiki2HTML
超链接
这是手动建立维基词条的方式 Wiki Item
[[Wiki Item]]
输出HTML时显示description,链到 wiki item: description
[[wiki item|description]]
自动连接: http://site/
http://site/
表格中不能用:desc
[[http://site/|desc]]
快捷键:
-
tab
到下一个链接 -
shift + tab
到上一个链接 -
Enter
进入wiki连接(如果是外链则在浏览器打开) -
backspace
返回上级wiki
创建图片
格式:
{{<img_url>|<alt_str>|<html_attr>}}
例子:
{{1.png}} {{wiki_images/raspberrypi/pi.cam.02.jpg|pi.cam|class="atc-img"}}
see :h vimwiki-syntax-transclude
源代码块
生成<pre>
标签:
print "hello" 缩进四个字符
{{{attr=value
与}}}
包起的多行内容,生成的格式为:
<pre attr='value'> print "hello" </pre>
生成<code>
标签:
`print "hello"` SHIFT + 1
表格
| 表头 | 表头 | 表头 | |------|------|------| | 表格 | 表格 | 表格 | | 跨行 | 表格 | 表格 | | \/ | 表格 | 表格 | | 表格 | 表格 | 表格 | | 表格 | 跨列 | > | | 表格 | 表格 | 表格 |
表头 | 表头 | 表头 |
---|---|---|
表格 | 表格 | 表格 |
跨行 | 表格 | 表格 |
表格 | 表格 | |
表格 | 表格 | 表格 |
表格 | 跨列 | |
表格 | 表格 | 表格 |
注意,生成的表格没有 thead
,只有格子是th
的tr
。
如果要结合DataTable,要把这一行tr
抽出来加到 thead
里
name | position | office | age | start date | salary |
---|---|---|---|---|---|
Rhona Davidson | Senior Javascript Developer | Edinburgh | 22 | 2012/03/29 | $433,060 |
Serge Baldwin | Support Lead | Edinburgh | 22 | 2013/03/03 | $342,000 |
Gloria Little | Software Engineer | Edinburgh | 23 | 2008/12/13 | $103,600 |
Thor Walton | Personnel Lead | Edinburgh | 35 | 2012/09/26 | $217,500 |
Bruno Nash | Developer | Edinburgh | 42 | 2010/12/22 | $92,575 |
Timothy Mooney | Junior Javascript Developer | Edinburgh | 43 | 2013/02/01 | $75,650 |
Tiger Nixon | Post-Sales support | Edinburgh | 46 | 2011/03/09 | $324,050 |
Dai Rios | Regional Director | Edinburgh | 51 | 2008/11/13 | $183,000 |
Zenaida Frank | System Architect | Edinburgh | 61 | 2011/04/25 | $320,800 |
Finn Camacho | Regional Director | Singapore | 28 | 2010/11/14 | $357,650 |
Suki Burks | Javascript Developer | Singapore | 29 | 2011/06/27 | $183,000 |
Jenette Caldwell | Support Engineer | Singapore | 64 | 2011/02/03 | $234,500 |
Jena Gaines | Data Coordinator | Singapore | 64 | 2012/04/09 | $138,575 |
Zorita Serrano | Team Leader | San Francisco | 22 | 2008/10/26 | $235,500 |
Herrod Chandler | Software Engineer | San Francisco | 28 | 2011/06/07 | $206,850 |
Cedric Kelly | Developer | San Francisco | 30 | 2010/07/14 | $86,500 |
Doris Wilder | Regional Director | San Francisco | 36 | 2008/10/16 | $470,600 |
Sonya Frost | Javascript Developer | San Francisco | 39 | 2009/09/15 | $205,500 |
Yuri Berry | Secretary | San Francisco | 41 | 2010/02/12 | $109,850 |
Jackson Bradshaw | Support Engineer | San Francisco | 47 | 2009/07/07 | $87,500 |
Tatyana Fitzpatrick | Marketing Designer | San Francisco | 47 | 2009/12/09 | $85,675 |
Brielle Williamson | Chief Operating Officer (COO) | San Francisco | 48 | 2010/03/11 | $850,000 |
Unity Butler | Office Manager | San Francisco | 51 | 2008/12/16 | $164,500 |
Howard Hatfield | Software Engineer | San Francisco | 56 | 2012/06/01 | $115,000 |
Gavin Cortez | Sales Assistant | San Francisco | 59 | 2012/08/06 | $137,500 |
Jonas Alexander | Financial Controller | San Francisco | 62 | 2009/02/14 | $452,500 |
Vivian Harrell | Junior Technical Author | San Francisco | 66 | 2009/01/12 | $86,000 |
Colleen Hurst | Regional Director | London | 19 | 2010/03/17 | $385,750 |
Shad Decker | Systems Administrator | London | 21 | 2009/02/27 | $103,500 |
Lael Greer | Technical Author | London | 27 | 2011/05/07 | $145,000 |
Paul Byrd | Office Manager | London | 30 | 2008/12/19 | $90,560 |
Quinn Flynn | Office Manager | London | 37 | 2008/12/11 | $136,200 |
Haley Kennedy | Software Engineer | London | 38 | 2011/05/03 | $163,500 |
Garrett Winters | Software Engineer | London | 41 | 2012/10/13 | $132,000 |
Sakura Yamamoto | Senior Marketing Designer | London | 43 | 2012/12/18 | $313,500 |
Ashton Cox | Chief Executive Officer (CEO) | London | 47 | 2009/10/09 | $1,200,000 |
Donna Snider | Regional Director | London | 47 | 2011/03/21 | $356,250 |
Caesar Vance | Developer | London | 53 | 2009/10/22 | $114,500 |
Prescott Bartlett | Marketing Designer | London | 66 | 2012/11/27 | $198,500 |
Charde Marshall | Pre-Sales Support | New York | 21 | 2011/12/12 | $106,450 |
Hope Fuentes | Customer Support | New York | 27 | 2011/01/25 | $112,000 |
Olivia Liang | Development Lead | New York | 30 | 2011/09/03 | $345,000 |
Brenden Wagner | Chief Marketing Officer (CMO) | New York | 40 | 2009/06/25 | $675,000 |
Fiona Green | Sales Assistant | New York | 46 | 2011/12/06 | $145,600 |
Shou Itou | Systems Administrator | New York | 59 | 2009/04/10 | $237,500 |
Martena Mccray | Integration Specialist | New York | 61 | 2012/12/02 | $372,000 |
a Cara Stevens | Developer | New York | 61 | 2013/08/11 | $98,540 |
Hermione Butler | Software Engineer | New York | 63 | 2010/01/04 | $125,250 |
Bradley Greer | Chief Financial Officer (CFO) | New York | 64 | 2010/06/09 | $725,000 |
Jennifer Chang | Director | New York | 65 | 2008/09/26 | $645,750 |
Gavin Joyce | Sales Assistant | Sydney | 23 | 2010/09/20 | $85,600 |
Michael Bruce | Integration Specialist | Sydney | 37 | 2011/06/02 | $95,400 |
Michelle House | Regional Marketing | Tokyo | 20 | 2011/08/14 | $163,000 |
Airi Satou | Accountant | Tokyo | 33 | 2008/11/28 | $162,700 |
Jennifer Acosta | Support Engineer | Tokyo | 37 | 2009/08/19 | $139,575 |
Michael Silva | Integration Specialist | Tokyo | 55 | 2010/10/14 | $327,900 |
Angelica Ramos | Accountant | Tokyo | 63 | 2011/07/25 | $170,750 |
列表
无序列表
*
和-
是等价的,后面必须跟一个空格
* 无序列表 条目一 * 无序列表 条目二 - 子列表 条目一 - 子列表 条目二
- 无序列表 条目一
-
无序列表 条目二
- 子列表 条目一
- 子列表 条目二
有序列表
# items # items # items # items
- items
- items
- items
- items
定义列表
define :: desption define :: desption define :: desption define :: desption
- define
- desption
- define
- desption
- define
- desption
- define
- desption
多个定义
Term:: :: Definition :: Definition :: Definition
- Term
- Definition
- Definition
- Definition
todo-list
VimWiki中todo-list只给列表加上一个css类, 在页面上显示的效果要自己写样式来实现:
- [x] `[x]` is `.done0` - [ ] `[ ]` is `.done0` - [.] `[.]` is `.done1` - [o] `[o]` is `.done2` - [O] `[O]` is `.done3` - [X] `[X]` is `.done4`
效果:
-
[x]
is.done0
-
[ ]
is.done0
-
[.]
is.done1
-
[o]
is.done2
-
[O]
is.done3
-
[X]
is.done4
另一个例子:
-
Throw a birthday party for my dog
- invite neighbour's cat
- think of funny games
- buy big fat bones on http://www.amazone.com
- this is something to do
-
Fix Vimwiki
-
XXX: Issue in file://~/asdfaosw/dwl.vim:
let cur_ln =asdfow asdowhe dwoe
-
XXX: Issue in file://~/asdfaosw/dwl.vim:
要注意的一点是在GitHUB上的mardkown有不同的规则:
- [ ] this is something todo - [x] this is something done - [X] this is something done too
所以要让todo-list在vimwiki和GitHUB上相互兼容,只能用[X]
表示完成,
[ ]
表示未完成。
- this is something todo
- this is something done
日记功能
使用快捷键<leader>w<leader>w
可以快速编辑当天的日记。还可以配合
Calendar插件轻松管理你的
日记。
" calendar map <F8> :Calendar<cr>
按F8
调出日历窗口,按q
退出。
在日期上点回车,就可以编辑当天的日记了!
PS: 按左右键在前后一个月里跳转,按上下键在前后一年跳转。按 t 回到当天。当然,Vim 默认的上下左右(hjkl)也是能用的。