转换 Vimwiki 为 Markdown

sed \nf ex \ni \n.md

README

相对 Wiki 语法,和 Wiki 对应工具支持情况,我更加喜欢 Markdown 了。 本地配合使用 Vimwiki 来编辑查看,发布使用 nico 来转换,而且有 Github 的原生支持, 使用 Markdown 是不二之选。

为了减少转换工作量,我简要写了这个脚本,可以初步将 vimwiki 语法的项目, 自动转换成 markdown 语法。

转换的内容包括:

\n header \n codes \n wikiword. \n links \n images \n comments \n %toc \n %title \n %nohtml

Usage

假设上面的脚本保存结构如下:

/ |\n convert.sh |\n ex |\n vimwiki/ |\n index.wiki `\n vim.wiki

在 convert.sh 同级目录执行:

\n ./convert.sh vimwiki/\n.wiki

然后自动或手动调整之后,删除 .wiki 文件即可。

Codes

convert.sh

1#!/usr/bin/env bash
2
3for x
4do
5  filename=\n(echo \nx|sed \ne "s/\.wiki\n/.md/")
6  sed \nf ex \nx > \nfilename
7done

ex

s/# \(.\n\)\n/\n \1/g s/^= \(.\n\) =\n/# \1/g s/^== \(.\n\) ==\n/## \1/g s/^=== \(.\n\) ===\n/### \1/g s/^==== \(.\n\) ====\n/#### \1/g s/^===== \(.\n\) =====\n/##### \1/g s/^====== \(.\n\) ======\n/###### \1/g s/{{{class="brush: \n\([^"]\n\)"/\`\`\`\1/g s/{{{class="\([^"]\n\)"/\`\`\`\1/g s/{{{/\`\`\`/g s/}}}/\`\`\`/g s/\[\([^] ]\{1,\}\)\]\([^](]\)/![pic](\1)\2/g s/\[\([^] ]\{1,\}\)\]\n/![pic](\1)/g s/\[\[\(\([^|]\{1,\}\)\|\)\([^]]\{1,\}\)\]\]/[\3](\2.md)/g s/\[\[\([^]]\{1,\}\)\]\]/[\1](\1.md)/g s/\[\(https\{0,1\}:\/\/[^ ]\n\) \([^]]\n\)\]/[\2](\1)/g s/%% \(.\n\)//g /%toc.\n/d s/%title \(.\n\)/# \1/g s/%nohtml/\n status: draft/g