obsidian

TL;DR
Use Obsidian instead of Notion or Roam Research if you want a Vim-like experience as much as possible.

Introduction

I had tried a lot of Personal Knowledge Management system (PKM) over the years: from evernote to Notion to Logseq to Emacs’ Orgmode to Roam Research to many more. I have finally settled on Obsidian.

Why Obsidian?

I’m a Neovim die-hard user. With Obsidian it’s possible to emulate vim experience as much as possible with the following:

Here’s my .obsidian.vimrc:

" Finding Obsidian Internal Commands
" 1. `:obcommand`
" 2. Press `Ctrl + Shift + I` to open Developer Tools
" 3. Copy the output

" Yank to system clipboard
set clipboard=unnamed

imap jk <Esc>

" navigate visual lines rather than logical ones
nmap j gj
nmap k gk
vmap j gj
vmap k gk
" nmap m zz

nmap <C-d> 10gj
nmap <C-u> 10gk

" nmap J 5gj
" nmap K 5gk

" yank till end of line
nmap Y y$

vmap J 5gj
vmap K 5gk

" <Space> can be bound to make chords, such as <Space>fs
unmap <Space>

" quit
nmap qq :obcommand<space>workspace:close<CR>

nmap <C-j> :obcommand<space>editor:swap-line-down<CR>
nmap <C-k> :obcommand<space>editor:swap-line-up<CR>

nmap za :obcommand<space>editor:toggle-fold<CR>
nmap zM :obcommand<space>editor:fold-all<CR>
nmap zR :obcommand<space>editor:unfold-all<CR>

" Go previous
nmap <C-o> :obcommand<space>app:go-back<CR>
" Go forward
nmap <C-i> :obcommand<space>app:go-forward<CR>

nmap gf :obcommand<space>editor:follow-link<CR>
nmap gF :obcommand<space>editor:open-link-in-new-leaf<CR>

nmap <A-l> :obcommand<space>editor:focus-right<CR>
nmap <A-h> :obcommand<space>editor:focus-left<CR>
nmap <A-k> :obcommand<space>editor:focus-top<CR>
nmap <A-j> :obcommand<space>editor:focus-bottom<CR>

nmap <C-w>v :obcommand<space>workspace:split-vertical<CR>
nmap <C-w>s :obcommand<space>workspace:split-horizontal<CR>
nmap <C-w>c :obcommand<space>workspace:close<CR>


" Find files and string
nmap <C-g> :obcommand<space>omnisearch:show-modal<CR>

nmap s :obcommand<space>mrj-jump-to-link:activate-lightspeed-jump<CR>

Sometimes the mouse is unavoidable but still the above is a good starting point.

Getting Started

{
  home.packages = with pkgs.stable; [
    obsidian
  ];
}

Conclusion

Given Obsidian is free you can just try it to see if you like it!