首先需要安装一份 VIM ViKi 插件, 到 VIM 网站 上下载最新版本, 按照提示安装即可。 需要注意的是, ViKi 插件还依赖另外两个别的插件, 根据 VIM 网站上的提示安装即可。
安装了 ViKi 之后, 就可以编写 ViKi 文件了。 但是, 如果你想将编写完毕的 ViKi 文件发布到网上的话, 你还需要一个编译器 deplate, 将 ViKi 编译为 HTML。
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
Windows 下的安装比较古怪: 将 deplate.exe 复制到 Windows 目录, 然后在你的
%HOME%
目录下创建一个 .deplate 目录,
将其余文件夹复制到 %HOME%\.deplate 目录下就可以了。
不知道 ViKi 默认为什么不把 .viki 的文件类型设置为 viki, 既然它不弄, 那自己弄好了: 在 .vimrc 中添加这段代码:
" Viki let g:vikiNameSuffix=".viki" augr viki au! autocmd! BufRead,BufNewFile *.viki set filetype=viki augr END
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
在开始编写我们的 ViKi 之前, 我们先确认一下 ViKi 和 deplate 是否都已经正确安装了。 如果安装没有成功的话, 请回到本文开头, 根据提示重新安装, 直到成功为止。
新建一个空白的文本文件, 叫 hello.viki, 然后用 gvim 打开它, 在 Normal 模式下输入:
:set ft?
如果 gvim 的状态栏上显示:
filetype=viki
说明 ViKi 安装成功。
在 hello.viki 中写入“this is a test!”, 然后使用“:wq”存盘退出, 在命令提示符下进入 hello.viki 所在目录, 输入以下命令:
deplate hello.viki
回车后等待命令执行完毕, 然后看看当前目录下是否出现 hello.html 文件。 用浏览器打开 hello.html, 看看其中是否出现“this is a test!”字样。 如果这两步都正常的话, 说明 deplate 已经正确安装。
| | | |