阅读提示:

本文已过时。

1 安装必要的插件与软件

1.1 安装 VIM ViKi

首先需要安装一份 VIM ViKi 插件,到VIM 网站 上下载最新版本,按照提示安装即可。需要注意的是,ViKi 插件还依赖另外两个别的插件,根据 VIM 网站上的提示安装即可。

安装了 ViKi 之后,就可以编写 ViKi 文件了。但是,如果你想将编写完毕的 ViKi 文件发布到网上的话,你还需要一个编译器 deplate,将 ViKi 编译为 HTML。

1.2 安装 deplate for Linux

deplate 是使用 ruby 编写的。由于 deplate 只支持 ruby1.8,不能在更高版本的 ruby 下运行,而 ruby1.8 在今天绝大部分发行版下都无法安装,因此我们唯一的办法是从源码编译一份 ruby1.8。

为了防止低版本的 ruby 影响到系统里其它软件,我们将 ruby1.8 安装到家目录的 .ruby1.8 文件夹下。首先,到 ruby 的网站上下载 https://www.ruby-lang.org/en/news/2013/06/27/ruby-1-8-7-p374-is-released/ 的源代码,解压之后执行:

$ ./configure --prefix=~/.ruby1.8
$ make
$ make install

正确安装 ruby 后,到 SourceForge 上下载最新版的 deplate。获得最新源代码后,然后照提示安装就可以了:

$ ~/.ruby1.8/bin/ruby setup.rb config
$ ~/.ruby1.8/bin/ruby setup.rb setup
# ~/.ruby1.8/bin/ruby setup.rb install

Deplate 会被安装到 ~/.ruby1.8/bin 目录下。为了方便使用,可以在任何一个 $PATH 能找到的目录下创建一个符号链接指向它:

ln -s ~/.ruby1.8/bin/deplate ~/bin

1.3 安装 deplate for Windows

Windows 下的安装比较古怪:将 deplate.exe 复制到 Windows 目录,然后在你的 %HOME% 目录下创建一个 .deplate 目录,将其余文件夹复制到 %HOME%\.deplate 目录下就可以了。

2 设置 autocmd

不知道 ViKi 默认为什么不把 .viki 的文件类型设置为 viki,既然它不弄,那自己弄好了:在 .vimrc 中添加这段代码:

" Viki
let g:vikiNameSuffix=".viki"
augr viki
au!
autocmdBufRead,BufNewFile *.viki set filetype=viki
augr END

3 增强 VIM 语法加亮插件

VIM 的语法加亮能力非常强,用来处理网页中代码片段的语法加亮真是再合适不过的了。可惜,deplate 自带的 VIM 语法加亮插件有问题,于是滇狐修改了它的代码,使它能够工作了。另外,deplate 还可以使用 highlight 语法加亮模块对网页中嵌入的其它语言代码进行上色,虽然功能不是很强,但在普通情况下基本够用,感兴趣的朋友可以看这里,感谢 magictable 来信指出这个问题。

另外,在 VIM7 下使用语法加亮时还会面临一个问题:有的文件格式的语法插件里定义了折叠,如 viki 文件、tex 文件等,这些文件在 VIM 中打开后,会被折叠起来。在 VIM6 中,折叠是发生在染色之后的,因此能够得到正常的染色结果,而 VIM7 折叠发生在染色之前,这样染色得到的结果里就之后 folder 了,看不到任何内容。为了避免这个现象,我们在调用 setf #{syntax} 之后,需要再调用一次 normal zR 把所有折叠展开。

默认的 GVim 语法加亮插件虽然功能很强大,但是也有一个非常令人讨厌的缺点,就是每次进行加亮的时候都需要启动 GVim,这使得我们在编译生成 HTML 文件的时候,不得不忍受着 GVim 一次一次跳出来抢占焦点,使得我们几乎无法正常进行其它工作。不启动 GVim,直接通过字符界面的 Vim 来运行语法加亮也是可行的,但在这样的情况下,生成的 HTML 文件就只能按照终端的配色方案染色,丢失了许多 GUI 下特有的颜色效果。CSS 的出现,解决了这个两难的问题。在最新版的 Vim 里,:TOhtml 支持生成使用 CSS 染色的代码片段。使用 CSS 染色之后,生成的代码中不再直接包含颜色信息,而是只包含该代码片段的类型,例如这段代码是关键字还是常量还是注释,等等,然后在文件头部的 CSS 样式表里再为每一种具体的类型指定颜色,这一特性为我们不运行图形界面的 GVim 进行代码高亮带来了可能:我们只需要在终端下运行字符界面的 VIM,进行代码高亮,得到的结果固然是只具有终端色彩的结果,但是没有关系,我们直接丢弃生成结果中的样式表,只留下有类型信息的染色结果,然后再引用我们事先生成好的 CSS 调色板就可以了。今后如果对这个调色板不满意,也不必重新生成代码,只需要更换一个调色板,就可以直接让所有代码变成另外一种配色方案的风格了。

滇狐在这里生成了一个 GVim 下 default 配色方案的调色板,感兴趣的朋友可以点击这里下载。

针对上面提到的几个问题,滇狐重新修改了一个新的 Vim 色彩高亮插件,大家可以点击这里下载。下载完毕后在你的 %HOME% 目录下创建一个 .deplate 目录,底下再创建一个 mod 目录,然后把下载到的文件扔到 mod 目录里就可以用了。

4 去掉中文断行多余空格

如果你从来不用 ViKi 写中文笔记的话,这一章你可以跳过。如果你写中文的时候每个段落都写成很长的一行,从来不在段落中间断开的话,你可以不看这一章。如果你写中文的时候在段落中间断行,发现生成的 HTML 文件中多出了一些多余的空格,但对此并不在乎的话,你也可以不看这一章。

这一章需要解决的问题是,你写 ViKi 的时候,单个的回车在编译生成 HTML 的时候会被处理成为空格。这对于英文来说没有问题,因为英文文章单词与单词、句子与句子之间本来就是要留空格的。但对于中文来说,中文词与词之间、句子与句子之间并不留空格,因此 ViKi 使用这样的方式处理之后,看起来就会很奇怪。为了解决这个问题,滇狐对 deplate 提供的 lang-zh_CN-autospace.rb 插件做了一点小小的修改。这个修改还远远不完善,使用过程中仍然有非常多的限制,但至少在你熟悉了它的脾气之后,它可以在一定程度上解决这个断行空格的问题。点击这里下载。下载完毕后在你的 %HOME% 目录下创建一个 .deplate 目录,底下再创建一个 mod 目录,然后把下载到的文件扔到 mod 目录里就可以用了。

5 检测安装结果

在开始编写我们的 ViKi 之前,我们先确认一下 ViKi 和 deplate 是否都已经正确安装了。如果安装没有成功的话,请回到本文开头,根据提示重新安装,直到成功为止。

5.1 检测 ViKi

新建一个空白的文本文件,叫 hello.viki,然后用 gvim 打开它,在 Normal 模式下输入:

:set ft?

如果 gvim 的状态栏上显示:

  filetype=viki

说明 ViKi 安装成功。

5.2 检测 deplate

在 hello.viki 中写入“this is a test!”,然后使用“:wq”存盘退出,在命令提示符下进入 hello.viki 所在目录,输入以下命令:

deplate hello.viki

回车后等待命令执行完毕,然后看看当前目录下是否出现 hello.html 文件。用浏览器打开 hello.html,看看其中是否出现“this is a test!”字样。如果这两步都正常的话,说明 deplate 已经正确安装。