--- layout: post category: app title: how to use vim as a personal wiki --- There is differents reasons to want a personal wiki on your machine: * privacy * having it everywhere I've tested some wiki, like tiddlywiki, but I've found nothing that was really what i wanted. The main inconveniance for me, is the need to use a webbrowser. A browser is not a text processor, so it's really painfull to use them for writing. I've started to try to use vim as wiki. Why would i want to use something like vim for this ? well, it's plain text (easy to grep, or to write script for manipulating data), application independent, it's a real text processor, you can customize it, and most importantly, i know how to use it, ... I've got a 'wiki' directory in my home directory, with all my files in it. I use git to versionize it (you can use svn if you prefer, there is no difference for this usage). In my .vimrc, i've added this instruction: bc. set exrc In my wiki directory, i've got another .vimrc with some specific mapping: {% highlight vim %} map ,I :e index.mkd map ,T :e todo.mkd map ,S :e someday.mkd map ,c :s/^ /c/ map ,w :s/^ /w/ map ,x :s/^ /x/ map gf :e .mkd " open page map :bp imap \date =strftime("%Y-%m-%d") set tabstop=2 " Number of spaces counts for. set shiftwidth=2 " Unify set softtabstop=2 " Unify {% endhighlight %} I organize my files in directory. I've got a "work", "lists", "recipes", "misc", ... and I put my files in this directory. I've got an index page, with links to main section. I don't have wikiword in camelcase or things like that, so if i want to put a link to a page, i juste wrote the link this way 'dir_name/page_name', then, i juste have to hit 'gf' on this link to open the page. I also use this place as a todo list manager. I've got one paragrah per day, like this : bc. 2008-06-14 - [@context] task 1 - [@context] task 2 ... and a bunch of vim mapping for marking complete (,c), work in progress (,w) or cancelled (,x). If i don't have a deadline for a particular task, I use a 'someday' file, where the task is put with a context. The good things with markdown, is that the syntax is easy to use, and it's easy to convert to HTML.