Vim Motions adds Markdown-aware editing capabilities to Obsidian’s Vim mode. Each feature can be toggled independently in Settings.
Markdown editing
- Text objects — 12 Markdown-aware text objects for bold, italic, code, math, links, blockquotes, callouts, code blocks, tags, and table cells. Work with all standard Vim operators (
d,c,y,v). - Structural navigation — jump between headings (
]h/[h), list items (]l/[l), links (]n/[n), and open buffers (]b/[b). Works with counts and operators. - Tables — cell navigation (
]c/[c), row navigation (]r/[r), cell text objects (i|/a|), table manipulation (<Leader>tprefix), auto-formatting, and a cursor-aware table widget for Live Preview. - Hard-wrap formatting —
gq/gwoperators with Markdown-aware line wrapping. Preserves blockquote, list, and nested structural prefixes on continuation lines.
Jump navigation
- Hop — jump to any visible position with two keystrokes. Find, word, line, and search motions. Works in operator-pending mode (
d+ easymotion) and visual mode. Live Preview aware. - Hint mode — Vimium-style keyboard navigation for the entire Obsidian UI. Multiple actions:
factivates,Fopens in new pane,yfyanks,dfcloses. Works in editor, sidebar, tab bar, settings, and popout windows.
Workspace & commands
- Workspace navigation — Neovim-style window management:
<C-w>splits,gt/gTtabs,gdgo-to-definition,gOoutline,gffile switcher. Global key handler for non-editor views (PDF, graph, canvas). - Surround — vim-surround implementation:
ds/cs/ys/Swith Markdown delimiter support. Count-prefix repeats delimiters (2ysiw*→**word**). Dot-repeatable. - Ex commands — 60+ ex commands for file management (
:e,:w,:saveas), buffer navigation (:bn,:bp,:b), window management (:sp,:vs,:tabnew), table manipulation, and Obsidian integration (:ob,:sidebar,:grep).
Quality of life
- Quality of life — Neovim defaults (
Y→y$,Q→@@), smart list continuation ono/O, scrolloff, configurable insert escape sequences, vim mode status bar with optional powerline styling, which-key hints, and chord display.
Configuration
All features are configurable via the Settings UI, .obsidian.init.lua, or .obsidian.vimrc. See the keybinding cheat sheet for a complete reference of all motions and commands.