[投稿]Pkm工具:Vimwiki

说明1:本文最初由Yibie于2009年12月投稿(原文)。在Yibie从Vim转向Emacs后,善用佳软接手更新本文。
说明2:阅读本文需要先了解和掌握Vim的基本使用。

用最顺手的Vim(介绍),以纯文本形式,构建自己Wiki,形成个人的知识库——这是很多人的梦想。而Vimwiki介绍)让梦想成真。

Vimwiki自称为 Personal Wiki for Vim(用Vim管理的个人wiki),可用来管理和组织笔记、想法,用来管理待办事项(todo list),用来编写文档。

1. Vimwiki的安装

1.1 Vimwiki插件的下载与安装

打开Vimwiki官方主页,下载 vimwiki.vba 文件到任意目录。
用Vim打开vimwiki.vba文件,然后在"Normal模式"下输入命令':so %',等一会儿,安装将自动完成。

1.2 Vimwiki的基本配置

Vimwiki的一些基本配置需要在vim配置文件中指定,主要是存储路径。
读者可参照下例进行修改,然后放到_vimrc文件中:

" vimwiki
let g:vimwiki_use_mouse = 1
let g:vimwiki_list = [{'path': 'E:/vimwiki/',
\ 'path_html': 'E:/vimwiki/html/',
\ 'html_header': 'E:/vimwiki/template/header.tpl',}]

最后3句分别指定了:
- 存放Vimwiki文件的路径(Vimwiki的文件后缀为.wiki)
- 从Vimwiki转换为Html网页时的保存路径;
- Vimwiki转换网页时使用的网页模板的路径。

2. Vimwiki入门:体验式教程

进入首页
操作:在Vim的Normal模式下,键入 \ww 三个键。
结果:Vim就会打开wiki首页(index.wiki)。
更多说明:① index.wiki所在目录见上述设置。② \ 键实际是<Leader>符,也可自定义。

创建新页面
操作:在首页中随便键入一些文字。比如, “这是wiki首页。 我要创建一个新页面 NewPage。”
结果:NewPage 会高亮显示。
更多说明:
- NewPage 这样的格式称为驼峰词,是创建新页面的最方便的做法。
- 对于更复杂的页面名称或中文页面名称,可以用双方括号表示。比如 [[中文页面]] 将创建 中文页面.wiki。括号内也可以用半角竖线分割,前半部分表示文件名,后半部分表示描述。比如 [[page3|我的第3篇wiki]] 将生成 page3.wiki 文件。而导出为html时,超链接的文字只有描述“我的第3篇wiki”。这种做法可以兼顾文件名的精简、规律、规范,与人工阅读的直观。采用Vim7.3中的最新 conceal text 特性,也可以在wiki中直接隐藏这些不用显示的符号,详见 这篇文章
- “快速引用某页面,并且,该页面若不存在则自动创建”是wiki的核心优势之一。

跳转到新页面
操作:在 Normal 模式下用光标双击 NewPage。
结果:index.wiki自动保存、关闭。在当前窗口打开了 NewPage.wiki 页面。
更多说明:
- Enter:与双击效果等同,在当前窗口中打开NewPage页面。
- Shift+Enter:上下分割窗口,NewPage在上,原页面在下。
- Ctrl+Enter:左右分割窗口,NewPage在左,原页面在右。

返回首页
操作:在 NewPage 中输入一些内容。进入Normal模式,按BackSpace。
结果:NewPage自动保存;并返回index.wiki页面;此时 NewPage 变成了另外一种高亮(区分

页面内的格式编辑
待完成……

2.1 Vimwiki的基本语法摘要

Vimwiki的下载主页上面给出一个快速学习Vimwiki语法的知识卡片(pdf格式,可通过一些软件转换为图片),从上面便可知道所有的Vimwiki中使用的语法,十分简单,方便使用.

PDF地址:http://habamax.ru/myvim/data/vimwikiqrc.pdf

2.1.1 普通语法:
*bold* -- bold
_italic_ -- italic
WikiWord -- link to WikiWord (这是驼峰词的用法)
[[complex wiki link]] -- link to complex wiki link
Indent lists with at least 1 space:
* bullet item
# numbered list item
= Header1 =
== Header2 ==
=== Header3 ===

2.2 Vimwiki键盘指令

<Leader>ww -- 打开默认的wiki主页
<Leader>wt -- 在新的标签页中打开默认的wiki主页
<Leader>ws -- Select and open wiki index file.(未知)
<Leader>wd -- 删除你所在的wikiword的页面
<Leader>wr -- 重命名你所在的wikiword页面
Backspace -- 返回上一页
Tab -- 寻找下一个wikiword
Shift Tab -- 寻找上一个wikiword
如果有什么不懂,可输入在"Normal"下输入":h vimwiki-mappings"查询

2.3 Vimwiki发布为html网页

Vimwiki可导出为html格式,便于发布为网页。
输入':Vimwiki2HTML -- 将当前wiki页转换成Html格式'
输入':VimwikiAll2HLML -- 将所有的wiki页转换成HTML格式'

3. Vimwiki的优点与缺点

3.1 Vimwiki的优点

  • 与Vim紧密结合,可使用Vim的内建的正则表达式规则,高效处理文本
  • 与Vim紧密结合,可利用Vim内建的多种命令,以及可显示多个分页的特性,同时展示多种窗口,快速查看多份资料.
  • 由于Vim是文本处理工具,所以任何笔记,只要存为文本数据,便可以用Vim来组织和整理
  • 内置了特别的语法高亮模式,在观感上与普通见到的wiki没有多大的分别.
  • 可利用':VimwikiAll2Html'这个命令快速将文本转化为网页.
  • 在Vim中自动识别网络链接格式,点击便可打开网页.
  • 在Vim的"Normal模式"下,在某行字句上面敲击"="可自动为该字句添加标题语法
  • 自动添加wikiwork,当英文单词里面有连续两个英文字母为写'WikiWord',Vimwiki会自动识别并将其标记为wikiword.该特性仅针对英文.

3.2 Vimwiki的一些缺点

  • 没有下划线的wiki语法
  • 由于是基于文本处理软件所开发的插件,所以无法支持导入图像、音频、视频等格式,同时也无法添加附件,但可以通过添加文件链接、或是网络链接的方式变通

5.0 回顾与总结

5.1 缘起Vim

在08年的时候,我就听过这“神的编辑器”的大名了。当时,也曾下载过一次,但是尝试的结果很不如意,打开了之后竟然无法输入中文!心里面想“见鬼 了!这是什么玩意儿!”。但是,因为内心中希望有朝一日能够用上这个东西装逼,我还是没有把它从硬盘里面删去。之后过了很久,我都没有用过Vim,我用了 其它的软件来作为我日常编辑的工具。后来能够用上Vim,还是拜托自已那不折腾会死星人的臭脾气。

在09年的开始,我开始对如何用电脑来记笔记感兴趣。在看过大量文章之余,也尝试了大量的工具。从小巧的Treepad、CintaNote、 PinPKM到以同步而著名的Evernote,这些尝试都无疾而终,不是它们不好而是我想要的方式并不是这样。于是,开始把目光投向了Wiki这个形 式。

同样是尝试了很多Wiki工具,比如xbeta介绍过的WikidPad、ZIM、单机版的MoinMoin、DokuWiki等等,还是觉得太麻烦了。为什么要有该死的后台?为什么不能直接编辑呢?

怀着这样的想法,我的目光又一次投向了Vim,这次我从滇狐1那里知道了Vim上一个叫Viki的插件,可以当把Vim变成Wiki。我很兴奋,但是尝试了之后不得不放弃了Viki,因为把它装上了之后总是出现莫明其妙的错误,这些错误在Windows的环境下又无法解决。

难道Vim上就只有Viki这个插件才能让Vim成为Wiki吗?我又开始了新一轮的找寻。很幸运,我找到了Vimwiki。在艰难地啃了它的英文说明书 之后。很容易就装上了。而有鉴于当时Vimwiki中文的资料的匮乏,我就写了一篇Vimwiki的中文文档,投稿给善用佳软。之后,我就很欣喜的看到在 善用佳软那强大的影响力之下,越来越多人2喜欢上Vimwiki,有的人还把Vimiwiki的帮助文档整个翻译成中文即3

而我在用Vimiwiki的时候,基本只用Vimwiki,偶尔会用到Calendar来记日记,Wiki的词条写了50个左右,最大的Wiki文档大概有30KB这样。但是并没有很好的坚持下去。于是,Vim用得越来越少了。

5.2 转到Emacs

在听说Vim的同时,我也听说过Emacs,但是Emacs在国内不如Vim流行,中文资料比Vim少,所以我一开始的选择是用Vim。但是在一次浏览网页的时候,看到了Emacs下Org-mode的演示视频4,非常的震憾,我没有想到文本编辑器还可以如此华丽!究竟有多华丽,大家看演示视频就知道。视

于是我在今年的6月份开始折腾Emacs。不过最初的目的是用Org-mode来管理自已的日程。折腾着折腾着,发现Org-mode的标记语言,可以很方便的组织文章的结构,于是开始用Emacs来记笔记5,写文章。

后来,我意外地发现原来Org-mode本身就具有Wiki功能,于是开始尝试用Emacs来构建我自已的Wiki。在这个过程中,我又受到 Zoom.Quite的启发,Wiki应该是每日记,在上面积累自已的想法和疑问,并一一解答,自然而然个人Wiki就可以坚持下来了。

如图所示:

http://farm5.static.flickr.com/4076/4865667606_db89b7a4a4.jpg

5.3 下面是我的一思考的总结:

  • 我为何对Vim、Emacs这类程序员用的工具感兴趣?
    • 程序员的工作其实就是编辑文本
    • 电脑已经成为编辑文本最主要的工具
    • 选择高效的文本工具,自然要考虑程序员用的工具
    • 最重要的是我本来就对Vim感兴趣
    • 专注于内容建设要比排版重要,而Word显然做不到
  • 为何用Vim、Emacs来塔建个人的Wiki?
    • 这是最经济、最绿色的选择。因为它们是免费的,同时安装的时候不需要依赖其他的东西,不会给系统增加进程
    • 不需要考虑版面的问题,可以专心于内容的编写
    • 直接编写内容,不用进入什么后台之类的,很方便
    • 输入即输出,所想即所得,这是最高境界
  • 个人的Wiki该如何编写?
    • 每天都记录,一直坚持
    • 在Wiki上记录自己想解决的问题,在解决问题时用Wiki记录过程
    • 不必预先分类,当你解决不同领域的问题时再分类

注:

1 滇狐的主页:http://edyfox.codecarver.org/html/index.html

2 来自Gracecode的推荐:http://www.gracecode.com/archives/3022/ 闲耘用Vimwiki塔建的Wiki:http://hotoo.github.com/vimwiki/index.html

3 闲耘翻译的Vimwiki文档:http://code.google.com/p/vim-script-cn/source/browse/trunk/doc/vimwiki.cnx

4 Org-mode演示视频:http://jaderholm.com/screencasts/org-mode/

5 这里有我用Org-mode做的笔记(不完全是):http://www.gtdstudy.com/?cat=297

2009-12:初稿,介绍VimWiki;
2010-08:增加回顾与总结部分。


B1:已有评论25 条

  • 希锐亚: 2009-12-22 12:58, #13476

    我最想要的是版本记录功能,而wiki的格式我并不喜欢,已经有html了,wiki的语法只是把事情搞得更复杂了。

    回复

    bigclean: 2009-12-22 18:55

    版本记录可以用相应的版本控制工具(svn,git),wiki只是作为载体而已,wiki简洁还是可以提高生产力的。

    回复

  • bigclean: 2009-12-22 18:50, #13479

    似乎忘了介绍vimwiki的后端delplate,用ruby写的还不错的wiki工具。在使用过的轻量标记wiki语言中,最喜欢的还是txt2tags和asciidoc,比较通用,而且前者很简单,导出格式也很多,后者是很强大(依赖于docbook)。vim的vimwiki和emacs的muse或是emacs-wiki都还是太依赖于具体软件了,相对来说还是muse更好,而且deplate的初衷也是作为muse的vim的clone。

    回复

    Yibie: 2009-12-22 19:44

    那个是 Vim 另外一个插件——Viki所使用的后端,在Vimwiki中,输出网页不需要通过其他工具转换

    回复

    bigclean: 2009-12-23 10:39

    还是不大喜欢用vba安装vim的插件,vimwiki的上个版本自己安装也会出错,也没有深究过。
    或许vba也是vim插件的未来格式,可能会方便一点,总是感觉用代码控制起来不大容易。
    vimviki输出网页不需要后端,deplate安装还要通过rubygems进行,实在很烦,有空再好好试试。

    回复

    Yibie: 2009-12-22 19:58

    我知道Muse,但是 Emacs 的学习曲线比 Vim 更加陡峭,而且对于我这个非计算机行业的人员来说,Emacs 基本上是没有必要去探究的,除非出自于兴趣

    txt2tags的使用,一直无法明白…

    首先还是要从自己能懂的工具下手吧

    回复

    bigclean: 2009-12-23 10:35

    emacs的确是学习的成本有点太大了。muse一个很不错的特性是插入图片是可视化的,而且各级标题是会有大小区别,只是这个特性是由emacs提供的。
    txt2tag和ascciidoc都是单py文件,需要python的运行环境,可能更多的是依赖于命令行(cmd或是shell)或是用makefile管理。可以参考一下这篇中文介绍,http://sunxun.info/2009/08/txt2tags-basic/。
    还有markdowm也很不错,wordpress也有相应的插件支持,可以试试。

    回复

    Yibie: 2010-01-24 14:16

    终于是知道了 txt2tags 是个超牛的工具~看看能否和vimwiki结合吧~如果是这样就好了

    winstarst: 2010-04-28 17:46

    以前用过DocBook,只是标记太复杂,推广不方便,看了你的说明找到了txt2tags,觉得是目前最适合我的解决方案了,并且最新的SVN版本已经支持Docbook了,以后就用它了,还是基于Python的,可以自己动动了,呵呵,谢过了。。

    回复

  • tc: 2009-12-22 20:33, #13487

    vimwiki这个插件第一眼看到的时候就觉得不错
    完全读完它的帮助文件,就知道,这就是我想要的,不要为了voof的双边框就安装个python
    感觉真的没有必要,在windows平台下.
    另外,vimwiki的转换网页功能也不错.值得使用

    回复

  • http://t.chinaren.com/xinwenjiang: 2009-12-23 10:14, #13489
  • 田鼠007: 2009-12-23 10:23, #13490

    当英文单词里面有连续两个英文字母为写’WikiWord’,这句话好象写得不通啊……

    回复

  • 天毅: 2009-12-23 10:30, #13491

    不知道善用佳软在用firefox的时候,有没有在用vimperator,感觉相当不错的一个插件。

    回复

  • http://t.chinaren.com/xinwenjiang: 2009-12-23 10:47, #13494

    请联系我,IT新闻奖候选通过。加我qq或者msn
    295788398
    chenzhong@live.it

    回复

  • beta: 2009-12-23 21:06, #13503

    一个很不错的软件:7-zip9.10重编译中文美化版。
    http://hi.baidu.com/wnsh83/blog/item/84746137a5e0fa1a90ef3905.html

    回复

  • 发条狐狸: 2009-12-25 17:56, #13569

    要是图片有移到网络链接上就显示的功能就爽了.

    回复

  • 天毅: 2010-01-09 9:26, #14341

    想问个问题,和vim兼容性比较好的拼音输入法是哪个?搜狗打“无奈”和按2选词的时候会执行vim里的其它命令,很无奈
    【善用佳软:无法具体回答,因为不用拼音。我认为这是输入法的bug,还上升不到兼容的层面(一般说vim兼容是指支持normal模式自动英文,i模式自动中文),猜测:换一个sogou版本,或者随便换一款google, 紫光等应该都行吧。】

    回复

    Yibie: 2010-01-24 14:00

    现在vim有vimim输入法插件,可以直接在vim下输入汉字而不必启用输入法软件

    回复

  • goreycn: 2010-01-29 16:04, #15115

    原文:将下载到的vimwiki.vba文件放到vim的安装目录”~\Vim\vim72\plugin”或”~\Vim\vimfiles\plugin” 下

    这一步不是必需的,放在哪里都一样,应该这个文件装好后,是用不到的,删了都可以。

    至少,我在Win,Mac里装都没有放到上面所说的位置。

    回复

  • ytao: 2010-03-06 16:50, #15799

    我装过几个版本的vimwiki,不知怎么的,无法用GoHome功能到index,每次都会报错。也许是我的配置有问题吧。

    回复

    yt: 2010-04-24 11:12

    我也是,只好使用热键自己打开index.wiki了。

    回复

  • Leon: 2010-06-05 10:14, #17447

    不知道怎样添加新词条。按Enter没有反应。

    回复

  • [...] 善用佳软的教程:http://xbeta.info/vimwiki.htm [...]

  • netnet: 2010-08-30 11:56, #20246

    wiki做PKM,可以看看connectedtext。这个最大特色可能是有可视化的结构图。
    http://www.connectedtext.com/screenshots.html

    这类东西偏重于解决自己怎样写。而我的主要需求是抓取别人写的,自己要做的是读和组织。所以不适合我。

    我觉得选知识库软件要小心,要尽量选择开放性的可转换的。如果有一天你发现不能满足你的需求,辛苦建立的知识库要遗弃在角落,那可就糟了。

    回复

  • netnet: 2010-08-30 11:59, #20247

    PKM我现在还是推荐wiz。相对来说功能比较完整。我觉得这个最有可能发展成比较完善的个人知识管理工具。

    回复

我要发表评论

您的留言:
NOTICE: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!

 名称/Name (* 必需)
 邮箱/Email (* 必需)
 链接/Link