1 安装必要的插件与软件

1.1 安装 VIM ViKi

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

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

1.2 安装 deplate for Linux

deplate 是使用 ruby 编写的, 因此在 Linux 下安装 deplate 之前, 请先确认你已经安装了 ruby。 关于 ruby 的安装, 这里不再详细介绍。

正确安装 ruby 后, 到 SourceForge 上下载最新版的 deplate。 网站上发布的最新版 deplate 有个严重的 bug, 就是即使在 Code 块中, 百分号“%”开头的行也会被看做注释, 这会导致许多问题, CVS 中的最新代码已经修正了这个故障。 因此, 如果你打算跟进最新版本的话, 请下载 zip 源代码包后, 再到 CVS 中 checkout 最新源代码以修正这个故障。 注意: CVS 中并没有包含全部代码, 因此在 checkout 之前, 需要先下载最新版本的 zip 包, 然后用 CVS 中的最新版本对它进行覆盖。 关于 CVS 命令的使用请参看相关资料, 这里不再详细解说。

获得最新源代码后, 然后照提示安装就可以了:

$ ruby setup.rb config
$ ruby setup.rb setup
# ruby setup.rb install

或者:

$ ./configure
$ make
# make install

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!
autocmd! BufRead,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 把所有折叠展开。

/usr/local/lib/ruby/site_ruby/1.8/deplate/mod/code-gvim.rb 修改为滇狐所写的模样即可。 需要注意的是, 滇狐的 .vimrc 中定义了自动修改时间戳的 autocommand, 它会和 code-gvim 冲突, 因此滇狐在下面的代码中调用了 NoAutoTimeStamp。 如果你不使用滇狐定义的 AutoTimeStamp 的话, 这里就不要调用 NoAutoTimeStamp 了, 否则会出错。 由于 Windows 下的 deplate 是一个打包后的 exe, 无法修正相应的插件, 所以滇狐只能 Bless 在 Windows 下受苦的孩子……

# code-gvim.rb
# @Author:      Thomas Link (samul AT web.de)
# @Website:     http://deplate.sf.net/
# @License:     GPL (see http://www.gnu.org/licenses/gpl.txt)
# @Created: 2006-03-01 09:34:00    26-Feb-2005.
# @Last Change: 2006-03-01 09:34:00
# @Revision:    0.93
# 
# = Description
# This module provides a specialized syntax highlighter using gvim. Adds 
# Deplate::Regions::Code#gvim_to_html.
# 
# = Usage
# = TODO
# = CHANGES

require 'fileutils'
require 'tmpdir'

class Deplate::Regions::Code
    add_highlighter(nil, "html",       :gvim_to_html)
    add_highlighter(nil, "htmlslides", :gvim_to_html)
    add_highlighter(nil, "htmlsite",   :gvim_to_html)

    def gvim_to_html(syntax, style, text)
        unless @deplate.options.allow_external
            return
        end
        gvim = %{#{Deplate::External.get_app('gvim')} \
            -f +"syn on" +"setf #{syntax}" \
            +"colorscheme #{style || "default"}" +"normal zR" \
            +"run! syntax/2html.vim" \
            +"NoAutoTimeStamp" \
            +"wq" +"q" \
            deplateGvim}
        @deplate.in_working_dir(Dir.tmpdir) do
            FileUtils.rm("deplateGvim.html") if File.exist?("deplateGvim.html")
            Deplate::External.write_file(self, "deplateGvim") \
                {|io| io.puts(text)}
            IO.popen(gvim) {|io| puts io.gets until io.eof }
            if File.exist?("deplateGvim.html")
                rv = [%{<div class="code">}]
                File.open("deplateGvim.html") do |io|
                    until io.eof?
                        line = io.gets
                        line.chomp!
                        rv << line if line =~ /^<pre>$/ .. \
                            line =~ /^<\/pre\>$/
                    end
                end
                rv << %{</div>}
                return rv.join("\n")
            else
                log("Error when running gvim", :error)
            end
        end
        return nil
    end
end

4 检测安装结果

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

4.1 检测 ViKi

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

:set ft?

如果 gvim 的状态栏上显示:

  filetype=viki

说明 ViKi 安装成功。

4.2 检测 deplate

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

deplate hello.viki

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

Created with Vim deplate Logo Google Sitemaps