Skip to content

Latest commit

 

History

History
202 lines (159 loc) · 5.46 KB

vimwiki.wiki

File metadata and controls

202 lines (159 loc) · 5.46 KB

%template math_template

vimwiki 语法

- 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">&amp;&#35;45&#59; 注释
 &amp;&#35;45&#59; `%% 注释`
 %% this text would not be in HTML

&#45; 标题

  &amp;&#35;45&#59; `%title 标题`

&#45; 不转换 html

  &amp;&#35;45&#59; `%nohtml`

&#45; 水平线

  &amp;&#35;45&#59; 在行首四个或更多减号
  &amp;&#35;45&#59; `&amp;&#35;45&#59;&amp;&#35;45&#59;&amp;&#35;45&#59;&amp;&#35;45&#59;`

&#45;&#45;&#45;&#45; 以下内容转载自&#91;&#91;http&#58;//wiki.ktmud.com/tips/vim/vimwiki&#45;guide.html&#124;丘迟的维基世界&#93;&#93; &#45;&#45;&#45;&#45;

&#45; 在wiki里使用更多的HTML标签

vimwiki 有一个 g&#58;vimwiki_valid_html_tags 值,可以指定允许写在 wiki 中的HTML标签。 g&#58;vimwiki_valid_html_tags 的默认值是 &#39;b,i,s,u,sub,sup,kbd,br,hr&#39; ,也就是说,当你在 wiki 中输入:

    `&amp;lt&#59;b&amp;gt&#59;Hello&amp;lt&#59;/b&amp;gt&#59; &amp;lt&#59;strong&amp;gt&#59;Hello&amp;lt&#59;/stong&amp;gt&#59;`

输出的HTML会显示为:

    &amp;lt&#59;b&amp;gt&#59;Hello&amp;lt&#59;/b&amp;gt&#59; &amp;lt&#59;strong&amp;gt&#59;Hello&amp;lt&#59;/stong&amp;gt&#59;

标签 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,'\\&lt;', \'\&lt;', 'g') let line = substitute(line,'\\&gt;', \'\&gt;', '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 是无法用字符模拟的。这样当然会造成性能问题,如果有知道更好解决方案的,请留言告诉我。