vimwiki 语法
-
文本字型
-
*粗体*粗体 -
_斜体_斜体 -
~~删除线~~删除线 -
代码(无语法)代码 -
上标^上标^上标上标 -
下标,,下标,,下标下标
-
-
链接
-
[[链接]]链接 -
[[链接|链接描述]]或[[链接][链接描述]] - 直接链接 http://code.google.com/p/vimwiki mailto:habamax@gmail.com 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 {{{ and }}} to define a block of preformatted text:
Tyger! Tyger! burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?
In what distant deeps or skies
Burnt the fire of thine eyes?
On what wings dare he aspire?
What the hand dare sieze the fire?
You can add optional information to {{{ tag: >
<pre class="brush: python">
def hello(world):
for x in range(10):
print("Hello {0} number {1}".format(world, x))
-
数学公式
-
内联公式
\( ßum_i a_i^3 = 1 \)
-
内联公式
\( ßum_i a_i^2 = 1 \)
-
居中公式
{{\( ... }}\) -
ßum_i a_i^2 -
= -
1\[ ßum_i a_i^2 = 1 \]
请添加 <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
至模板中
-
注释
-
%% 注释
-
-
标题
-
%title 标题
-
-
不转换 html
-
%nohtml
-
-
水平线
- 在行首四个或更多减号
-
----
以下内容转载自丘迟的维基世界
- 在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 中输入:
<b>Hello</b> <strong>Hello</stong>
输出的HTML会显示为:
Hello Hello</stong>
标签 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> 的形式输入 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 是无法用字符模拟的。这样当然会造成性能问题,如果有知道更好解决方案的,请留言告诉我。