David Gay

Fast, Git-Backed, Markdown Notes in Vim with notational-fzf-vim

2020-05-25 • Updated 2023-01-02

Update 2023: I would actually recommend Obsidian these days if you are okay with something graphical. The Vim plugin is wonderful. If you want to avoid Electron, read on.


Like many developers, I like to take notes during the day. And like many developers, I spent a lot of time trying out different apps and systems for notetaking, especially during the last couple years. I've tried vimwiki, OneNote, Bear, Gollum, Notion, you name it. Today I'm going to share the system I'm using now, and what my requirements were.

TLDR: notational-fzf-vim

Requirements

These are must-haves for me, and are responsible for my jumping from system to system. It's difficult to find different apps that tick all these boxes:

It would also be cool to be able to create links between notes, but only if they auto-updated when I renamed or moved files. But I could look past a solution not having linking.

During my long search, nothing I tried was quite satisfying. I was extremely frustrated because it seemed like what I wanted was pretty simple and I felt like it should exist, and I knew it could exist because Notational Velocity and nvAlt exist, but they didn't satisfy all my requirements. I had started building my own solution in Ruby when I found notational-fzf-vim.

Solution: notational-fzf-vim

notational-fzf-vim is a simple Vim plugin that gives you Notational Velocity-like functionality, powered by fzf and ripgrep, and nothing more. Hit your keybinding and search for a file in your configured directories, or create one if it doesn't exist. And it's lightning-fast.

I'm thrilled to have found it. On top of that, I discovered fzf and ripgrep, two awesome utilities that I had never seen before and now use daily.

If you're interested, there's a good readme in the git repo that will hook you up proper. It speaks for itself; don't forget dependencies and required settings. Follow those instructions, and then you'll probably want to set a keybinding. Here's mine, which activates notational-fzf-vim when I hit F3 in normal, visual, or insert mode (F3 is fast and easy with my keyboard config):

noremap <silent> <F3> :NV<CR>
vnoremap <silent> <F3> <C-C>:NV<CR>
inoremap <silent> <F3> <C-O>:NV<CR>

notational-fzf-vim allows me to satisfy all my requirements. Plus I can use the vim environment I already have, and do Git backups however I want. It doesn't have the optional linking I mentioned, but I'm cool with that because using links would actually be slower than hitting my :NV binding and typing. I know, because I used vimwiki and this is way faster.

Feedback

Questions, comments, or tips for me? See a mistake in this post? Send me an email.


Go back home