%template math_template
- Full_English_Version - 完整中文版本
- 文本字型
- `*粗体*` *粗体* - `_斜体_` _斜体_ - `~~删除线~~` ~~删除线~~ - `代码(无语法)` `代码` - `上标^上标^` 上标^上标^ - `下标,,下标,,` 下标,,下标,,
- 链接
- `[[链接]]` 链接 - `[[链接|链接描述]]` 或 `[[链接][链接描述]]` - 直接链接 http://code.google.com/p/vimwiki mailto:[email protected] ftp://vim.org
- 标题
- `= 一级标题 =` 一级标题 - `= 二级标题 =` 二级标题 - `=` 前加空格使标题居中
- 段落
- `- 段落一` - `* 段落二` - `- 子段落一` - `* 子段落二` - `# 第一` - `# 第二`
- `- 和*` 可以混用 - 使用空行分段
- 表格
- 基本表格 {{{ | head1 | head2 | | value1 | value2 | | value3 | value4 | }}}
| head1 | head2 | | value1 | value2 | | value3 | value4 |
- 表头高亮 {{{ | head1 | head2 | |--------|--------| | value1 | value2 | | value3 | value4 | }}}
| head1 | head2 | |--------|--------| | value1 | value2 | | value3 | value4 |
- 手动排列表格 {{{ | a | b | c | d | | \/ | e | > | f | | \/ | \/ | > | g | | h | > | > | > | }}}
| a | b | c | d | | \/ | e | > | f | | \/ | \/ | > | g | | h | > | > | > | 5.7. Preformatted text *vimwiki-syntax-preformatted*
Use to define a block of preformatted text:
You can add optional information to >
<pre class="brush: python">&#45; 注释 &#45; `%% 注释` %% this text would not be in HTML
- 标题
&#45; `%title 标题`
- 不转换 html
&#45; `%nohtml`
- 水平线
&#45; 在行首四个或更多减号 &#45; `&#45;&#45;&#45;&#45;`
---- 以下内容转载自[[http://wiki.ktmud.com/tips/vim/vimwiki-guide.html|丘迟的维基世界]] ----
- 在wiki里使用更多的HTML标签
vimwiki 有一个 g:vimwiki_valid_html_tags 值,可以指定允许写在 wiki 中的HTML标签。 g:vimwiki_valid_html_tags 的默认值是 'b,i,s,u,sub,sup,kbd,br,hr' ,也就是说,当你在 wiki 中输入:
`&lt;b&gt;Hello&lt;/b&gt; &lt;strong&gt;Hello&lt;/stong&gt;`
输出的HTML会显示为:
&lt;b&gt;Hello&lt;/b&gt; &lt;strong&gt;Hello&lt;/stong&gt;
标签 b 被当作可用的HTML标签,而 strong 则输出为文本。
但有时候我们需要建立更强大的维基页面,不只用到这几个标签。比如本站首页的“有什么特别的”部分,就是一个有特定 class 和 id 的 div。于是在 vimrc 中定义:
`let g:vimwiki_valid_html_tags='b,i,s,u,sub,sup,kbd,br,hr,div,del,code'`
在这里我添加了 div, del, code 三个标签。
但是,非常不幸,当我们需要在维基里贴HTML代码,即使我们把代码放到了 {{{ }}} 包裹的 pre 里,这几个标签还是会被输出为实际的HTML标签,而不是文本。
解决办法还是修改 vimwiki_html.vim 这个文件。
找到 " WIKI2HTML "{{{ 所在行,也就是开始转换HTML的地方。
在前面添加一个函数:
function s:parse_tag_keeper(line) let line = substitute(a:line,'\\<', \'\<', 'g') let line = substitute(line,'\\>', \'\>', 'g') return line endfunction
然后在之后的 s:parse_line(line, state) 函数内,插入这个函数的调用:
...
let line = s:safe_html(a:line) let line = s:parse_tag_keeper(line)
这样如果我们用 <tag></tag> 的形式输入 valid_html_tags 包括的标签,输出的HTML就会把它们当成文本处理了。
在写本文时,我需要输出 {{{ }}} ,而这对标记被作为了 wiki 里 pre 区块的 pattern 。于是就还要再写一个函数:
function s:parse_pre_keeper(line) let line = substitute(a:line,'\\{\\{\\{', \'{{{', 'g') let line = substitute(line,'\\}\\}\\}', \'}}}', 'g') return line endfunction
就把它定义在 s:parse_tag_keeper 之后吧。但调用的时候怎么办呢?肯定要放在 vimwiki_html.vim 处理了 pre 区块之后。思来想去,只能放在刚好要输出HTML文件的时候。但是 vim 的 writefile 函数,接受的参数是一个 list (相当于数组),而不是字串。既然如此,我们就把输出结果给合并了再替换,然后再包装成 list 。
找到这句:
call writefile(ldest, path.wwFileNameOnly.'.html')
稍微修改一下:
let output = join(ldest, "\n\r") let output = s:parse_pre_keeper(output) let outputlist = split(output, "\n\r") call writefile(outputlist, path.wwFileNameOnly.'.html')
之所以还要再split,是因为writefile写入的 NL 是无法用字符模拟的。这样当然会造成性能问题,如果有知道更好解决方案的,请留言告诉我。