Emacs users enjoy org-mode as super organizer of personal notes, documentation, diary, tasks list and many other things. And I wanted the same features for Vim and recently I found it. Welcome vimwiki as your personal organizer. Here is the list of features, what you can do with vimwiki plugin:
- Organize notes in multiple wiki files.
- Link your ideas/notes with quick wiki links.
- Manage to-do lists.
- Write documentation with rich formatting.
- Use tables to organize data.
- Memorize events in diary.
- Generate HTML from wiki files.
- Multiple wiki support.
Install
As usual, use following Git repository to install plugin with Pathogen:https://github.com/vimwiki/vimwiki
Then you need to register wiki folders:
let g:vimwiki_list = [{'path': '$HOME/Documents/wiki'}]In order to enjoy synchronization between all my devices, I shared this folder with BitTorrent Sync.
Also I put additional convenient settings into my ~/.vimrc:
-
let g:vimwiki_dir_link = 'index'
- automatically resolve folder links as folder/index.wiki -
let g:vimwiki_hl_headers = 1
- highlight headers with different colors -
let g:vimwiki_hl_cb_checked = 1
- highlight completed tasks
Key bindings
-
<Leader>ww
- Open default wiki index file. -
<Leader>wt
- Open default wiki index file in a new tab. -
<Leader>ws
- Select and open wiki index file. -
<Leader>wd
- Delete wiki file you are in. -
<Leader>wr
- Rename wiki file you are in. -
<Enter>
- Follow/Create wiki link -
<Shift-Enter>
- Split and follow/create wiki link -
<Ctrl-Enter>
- Vertical split and follow/create wiki link -
<Backspace>
- Go back to parent(previous) wiki link -
<Tab>
- Find next wiki link -
<Shift-Tab>
- Find previous wiki link
Organize notes
Any time when you need to open vimwiki you can just type<Leader>ww
and vim opens index wiki file in the current buffer. See key binding to open vimwiki in a new tab or split window.
If you want to place a note to separated wiki file, then just type a name of wiki file (SomeWikiNote) or type a wiki link (
[[Some wiki note]]
) and hit <Enter>
on it. Vimwiki automatically creates a new wiki file and opens it in the current buffer. Hit <Backspace>
in order to return to previous wiki file.
Vimwiki supports all necessary markups for creating rich notes.
There are a few typefaces that gives you a bit of control over how your text should be decorated:
*bold text* _italic text_ ~~strikeout text~~ `code (no syntax) text` super^script^ sub,,script,,Define logical sections with headers:
= Header level 1 = == Header level 2 == === Header level 3 === ==== Header level 4 ==== ===== Header level 5 ===== ====== Header level 6 ======Combine list of items with bulleted, numbered and mixed lists:
* Bulleted list item 1 * Bulleted list item 2 * Bulleted list sub item 1 * Bulleted list sub item 2 # Numbered list item 1 # Numbered list item 2 # Numbered list sub item 1 # Numbered list sub item 2or definition list:
Term 1:: Definition 1 Term 2:: :: Definition 2 :: Definition 3Collect table data with :VimwikiTable command:
| Year | Temperature (low) | Temperature (high) | |------|-------------------|--------------------| | 1900 | -10 | 25 | | 1910 | -15 | 30 | | 1920 | -10 | 32 | | 1930 | _N/A_ | _N/A_ | | 1940 | -2 | 40 |Store code snippets with preformatted blocks:
{{{python def hello(world): for x in range(10): print("Hello {0} number {1}".format(world, x))}}}
Text started with 4 or more spaces is a blockquote.
4 or more dashes at the start of the line is a 'horizontal line' (
<hr />
): ----
Mathematical formula are highlighted, and can be rendered in HTML using the powerful open source display engine MathJax (http://www.mathjax.org/).
You can have todo lists -- lists of items you can check/uncheck. Consider the following example:
= Toggleable list of todo items = * [X] Toggle list item on/off. * [X] Simple toggling between [ ] and [X]. * [X] All list's subitems should be toggled on/off appropriately. * [X] Toggle child subitems only if current line is list item * [X] Parent list item should be toggled depending on it's child items. * [X] Make numbered list items toggleable too * [X] Add highlighting to list item boxes * [X] Add [ ] to the next created with o, O and <CR> list item.Pressing <C-Space> on the first list item will toggle it and all of its child items. <C-Space> adjusts parents items also. It is possible to toggle several list items using visual mode.
See extensive help for markup syntax
:h vimwiki-syntax
.
Thank you for providing this quick introduction to such an awesome plugin!
ReplyDeleteThis is very much appreciated!! Thank you!!
ReplyDelete