Skip to content

Instantly share code, notes, and snippets.

@lambdalisue
Last active December 4, 2024 03:28
Show Gist options
  • Save lambdalisue/64e9db74532ba7cf7f28ce5a53bc71d5 to your computer and use it in GitHub Desktop.
Save lambdalisue/64e9db74532ba7cf7f28ce5a53bc71d5 to your computer and use it in GitHub Desktop.
Obsidian vimrc
" https://github.com/esm7/obsidian-vimrc-support
nmap j gj
nmap k gk
nmap ; :
set clipboard=unnamed
" Enable Emacs-like mappings in Insert/Command Mode
" It seems simple mappings doesn't work in 'imap' so some workaround is
" required
imap <C-a> <Esc><Home>i
imap <C-e> <Esc><End>a
imap <C-b> <Esc><Left>a
imap <C-f> <Esc><Right>a
imap <C-d> <Del>
cmap <C-a> <Home>
cmap <C-e> <End>
cmap <C-f> <Right>
cmap <C-b> <Left>
cmap <C-d> <Del>
" Close
exmap wq obcommand workspace:close
exmap q obcommand workspace:close
" 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<CR>
exmap forward obcommand app:go-forward
nmap <C-i> :forward<CR>
" Follow link with Ctrl+W F and Ctrl+W Ctrl+F
exmap followLink obcommand editor:follow-link
nmap gf :followLink<CR>
exmap openLinkInNewSplit obcommand editor:open-link-in-new-split
nmap <C-w>f :openLinkInNewSplit<CR>
nmap <C-w><C-f> :openLinkInNewSplit<CR>
" Window navigation
exmap focusRight obcommand editor:focus-right
nmap <C-w>l :focusRight<CR>
nmap <C-w><C-l> :focusRight<CR>
exmap focusLeft obcommand editor:focus-left
nmap <C-w>h :focusLeft<CR>
nmap <C-w><C-h> :focusLeft<CR>
exmap focusTop obcommand editor:focus-top
nmap <C-w>k :focusTop<CR>
nmap <C-w><C-k> :focusTop<CR>
exmap focusBottom obcommand editor:focus-bottom
nmap <C-w>j :focusBottom<CR>
nmap <C-w><C-j> :focusBottom<CR>
exmap split obcommand workspace:split-horizontal
nmap <C-w>s :split<CR>
nmap <C-w><C-s> :split<CR>
exmap vsplit obcommand workspace:split-vertical
nmap <C-w>v :vsplit<CR>
nmap <C-w><C-v> :vsplit<CR>
" Tab navigation
exmap tabnew obcommand workspace:new-tab
nmap <C-w>t :tabnew<CR>
nmap <C-w><C-t> :tabnew<CR>
exmap tabnext obcommand workspace:next-tab
nmap gt :tabnext<CR>
nmap <C-n> :tabnext<CR>
exmap tabprev obcommand workspace:previous-tab
nmap gT :tabprev<CR>
nmap <C-p> :tabprev<CR>
" Emulate Folding https://vimhelp.org/fold.txt.html#fold-commands
exmap togglefold obcommand editor:toggle-fold
nmap zo :togglefold<CR>
nmap zc :togglefold<CR>
nmap za :togglefold<CR>
exmap unfoldall obcommand editor:unfold-all
nmap zR :unfoldall<CR>
exmap foldall obcommand editor:fold-all
nmap zM :foldall<CR>
" Reload
exmap reload obcommand app:reload
nmap <F5> :reload<CR>
" We first need to unmap <Space> to use <Space>
" https://github.com/esm7/obsidian-vimrc-support?tab=readme-ov-file#some-help-with-binding-space-chords-doom-and-spacemacs-fans
unmap <Space>
" MRU
exmap mru obcommand switcher:open
nmap <BS> :mru<CR>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment