Jade Dungeon

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~~ 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,只有格子是thtr。 如果要结合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
  1. items
  2. items
  3. items
  4. 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

另一个例子:

要注意的一点是在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)也是能用的。