A polished, Neovim-native experience inside Obsidian. Vim Motions adds what’s missing from Obsidian’s built-in Vim mode: Markdown-aware text objects, structural navigation, hard-wrap formatting, workspace keyboard control, EasyMotion, Lua configuration with vim.keymap.set / vim.opt / vim.fn / vim.api / vim.tbl_* / autocommands / timers / highlight groups, and a built-in .obsidian.vimrc loader.
Feature highlights
- Markdown text objects — operate on bold, italic, code, math, links, blockquotes, code blocks, tables, and more with standard Vim operators
- Structural navigation — jump between headings, lists, links, and buffers with
]h,]l,]n,]b - Lua configuration —
.obsidian.init.luawithvim.keymap.set,vim.opt,vim.fn,vim.api(buffer APIs,nvim_set_hl),vim.tbl_*,vim.json,vim.inspect,vim.schedule/vim.uvtimers, 12 autocommand events, buffer-local keymaps, andvim.obsidiannamespace - Built-in vimrc —
.obsidian.vimrcloader with 35+ configurable settings - Hop — jump to any visible position with two keystrokes
- Workspace keyboard control — navigate panes, tabs, and sidebar without a mouse
- Surround — add, change, or delete surrounding delimiters (vim-surround)
- Hard-wrap formatting — Markdown-aware
gq/gwoperators - 60+ ex commands —
:sp,:vs,:e,:grep,:ob, and more - Vimium-style hints — navigate the entire Obsidian UI with keyboard hints
Get started
New to Vim Motions?
Start with installation to install the plugin, then follow recommended-setup to configure Obsidian for the best experience.
Quick links
- Keybinding cheat sheet — complete reference for all motions, text objects, operators, and commands
- Settings reference — all 43 configurable items with defaults and vimrc equivalents
- Known limitations — architectural constraints and workarounds
What’s new
- Lua API expansion — 22 table/string utilities (
vim.tbl_deep_extend,vim.split,vim.inspect,vim.json), async primitives (vim.schedule,vim.defer_fn,vim.uvtimers), buffer-local keymaps, buffer content APIs (nvim_buf_get_lines/nvim_buf_set_lines),nvim_set_hlhighlight customization,vim.obsidiannamespace, sandboxedvim.env, 4 new autocmd events, and enhancedvim.notifywith log levels.
See the full changelog for details.