How to Enable Obsidian Vimrc Support

Photo of author

As a Vim user, I try to enable Vim mode wherever possible to improve my productivity. Obsidian is no different. Now that I am trying to separate writing from editing, I have started using obsidian even more. So it got me thinking, how can I synchronize my obsidian keymappings with my vim keybindings even more? 🤔

Turns out there is a plugin for that 🎉. Just install obsidian-vimrc-support and create a .obsidian.vimrc file at the root of your project and you’re good to go. We can just configure keybindings from that file like we do with our vim/neovim.

Well, except for some edge cases.

Edge Cases to be careful about

Vim wouldn’t be Vim if things just worked out of the box and we wouldn’t be Vim users if we gave up just because things are not working.

Here are the things I did (without asking too many questions) to make things work:

  • I tried naming it obsidian.vimrc without the dot in the front, but it didn’t work. So name it .obsidian.vimrc.
  • I wanted to use <Space> as the leader key but mapleader doesn’t work. So I used <Space> directly in keybindings instead of <leader>.
    • Make sure to unmap <Space> first or it won’t work in keybindings.
  • Due to a bug, nmap <key> <cmd> works only when <cmd> is a single word 🤦‍♂. You get around it by first mapping the <cmd> against a exmap and then using the exmap with nmap. See below.
exmap anyNameYouWant obcommand app:go-back
nmap <C-o> :anyNameYouWant
  • obcommand stands for obsidian commands. If you type :obcommand on obsidian, it prints all the possible obcommand in the console log (press Ctrl + Shift + i). You can also find it here: obcommand list.
  • I couldn’t make <Shift> work together with <Ctrl> for some reason.
  • To bind a particular key combination ensure it’s not already bound to something else on Obsidian. Find them in settings and unbind them from there first.

My basic configuration for Obsidian Vimrc

I have started with a few basic configurations. Key binds for:

  • Navigating back and forward between files using <C-o> and <C-i>.
  • Searching files using <Space>sf
  • Toggling left sidebar with <C-n>

Here is how it looks. It’s not much but now that I have the basic setup, it will continue growing. In the meantime, hopefully, the plugin will be able to sort out its quirks.

" set leader
unmap <Space>

" Have j and k navigate visual lines rather than logical ones
nmap j gj
nmap k gk
" I like using H and L for beginning/end of line
nmap H ^
nmap L $

" Yank to system clipboard
set clipboard=unnamed

" Go back and forward with Ctrl+O and Ctrl+I
" (make sure to remove default Obsidian shortcuts for these to work)
exmap back obcommand app:go-back
nmap <C-o> :back
exmap forward obcommand app:go-forward
nmap <C-i> :forward

" Search file
exmap searchFile obcommand global-search:open
nmap <Space>sf :searchFile

" Toggle left side bar
exmap toggleLeftSideBar obcommand app:toggle-left-sidebar
exmap revealFile obcommand file-explorer:reveal-active-file
nmap <C-n> :toggleLeftSideBar
nmap <Space>gf :revealFile

Oh hi there đź‘‹
It’s nice to meet you.

Sign up to receive updates in your inbox once a week.

I don’t spam! You can always unsubscribe if you don't like it.

🗞️ Don’t miss the latest posts!

Subscribe to the Weekly Newsletter

I won't spam. Promise!

Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments