Transform Mardown to Vimwiki format with sed
--------------------------------------------

 Last edited: $Date: 2020/09/05 11:27:23 $

## Vimwiki backlist function not working in Markdown

I started with a first try-out to create a Zettelkasten
with Vimwiki. For this I use a Vimwiki in Markdown
format.

Unfortunately, the `:VWB` function, which creates a
list of backlinks, works only in the original Vimwiki
format.

## Transformation to Vimwiki format

This is my first try-out for a Zettelkasten, so I
don't have many files in it. Therefor, the easiest
solution seems to be to a conversion of the current Vimwiki
Zettelkasten to the original Vimwiki format.

This turned out to be much simpler than it sounds :)

I do use only some simple formatting:

    # Top level header
    ## Second level header
    ### Second level header
    [description](filename)
    [description](url)

These formats has to be transformed to the original Vimwiki
format:

    = Top level header =
    == Second level header =
    === Third level header ===
    [[filename|description]]
    [[url|description]]

## sed script to do the transformation

As this is not very complicated, I tried to do this
with sed.

This is what does the trick:

    s/\[\(.*\)\](\(.*\))/[[\2|\1]]/
    s/\(^###\) \(.*\)/=== \2 ===/
    s/\(^##\) \(.*\)/== \2 ==/
    s/\(^#\) \(.*\)/= \2 =/

People with more sed-fui than I have will probably do
it more efficient, but it works :)

Put this lines in a file, I called it `conversion.sed`
and run this with some shell script to convert all
the files with it to the new format, in a different
directory. Also, the files have to be renamed from
`filename.md` to `filename.wiki`.

I used this as a shell script:

    #!/bin/sh

    for file in $(ls 0??.md)
    do
    nieuw="../zettelkasten2/${file%\.md}.wiki"
    echo $file $nieuw
    cat $file | sed -f conversion.sed > $nieuw
    done

My Vimwiki Zettelkasten try-out uses base-36 encoded
filenames, like `00a.md`, `01n.md`, and so on.
So far I have about 75 files in it. That is why in the
script above I use `ls 0??.md`.

My Vimwiki runs in a FreeBSD jail, so this used the
FreeBSD versions of sed and of the shell.

Have fun!