Vimakase

approved

by jelenv

Opinionated LazyVim-style keyboard setup: space leader keys and a neo-tree-style file explorer with vim keys. - This plugin has not been manually reviewed by Obsidian staff.

27 downloadsUpdated 7d agoMIT

Vimakase

Opinionated, LazyVim-style keyboard setup for Obsidian. Omakase: install it and the keys are already chosen for you.

  • Space leader keys in the editor (vim mode) and in other views: space space to find files, space e for the explorer, and more.
  • Canopy: neo-tree-style keys for Obsidian's built-in file explorer in the sidebar (j/k/h/l, a add, d delete, r rename, m move, x/y/p cut/copy/paste).

Desktop only. Editor leader keys need Obsidian's vim mode (Settings → Editor → Vim key bindings).

Leader keys

KeysAction
space space / space f fFind files (Omnisearch if installed, otherwise the quick switcher)
space eToggle file explorer (reveals the current file)
space / / space s gSearch in vault
space , / space f rSwitch file (quick switcher)
space :Command palette
space f nNew note
space - / space |Split below / right
space b d / space w dClose tab
space b oClose other tabs
space s sOutline
space g gGit view (Obsidian Git)

File explorer keys (Canopy)

Active while the file explorer is focused.

KeyAction
j / kMove down / up
hClose folder, or go to parent
lOpen file, or expand folder
enterOpen file, or toggle folder
g g / GFirst / last item
zCollapse all folders
aAdd file. End with / for a folder; nested paths like a/b/note work; no extension means .md
AAdd folder
dDelete, after a confirmation (enter/y confirms, escape/n cancels). Uses Obsidian's trash setting
rRename (links are updated)
mMove to a path (missing folders are created)
cCopy to a path
x / y / pCut / copy / paste into the focused folder
uUndo the last add, rename, move, copy, paste or delete (this session)
s / S / tOpen in vertical split / horizontal split / new tab
qClose the explorer
escapeBack to the editor

Obsidian's own space and enter handling in the explorer is switched off while Vimakase handles those keys, so space works as the leader there.

Key sequences

Sequences behave like which-key in LazyVim:

  • After 200 ms, a popup in the bottom-right corner lists the keys that can follow, with groups such as +file/find.
  • An unfinished sequence waits for the next key. escape cancels, backspace goes one level up, and any other key cancels.
  • Settings → Vimakase → Key sequence timeout cancels unfinished sequences after a set time instead (0, the default, waits).

In the editor, leader keys start only in vim normal mode with no vim command in progress, so counts, operators and f/t keep working. Canvas and Excalidraw views are skipped, because space pans there.

Install

Not in the community plugin list yet. Manual install:

  1. Download main.js, manifest.json and styles.css from the latest release.
  2. Put them in <vault>/.obsidian/plugins/vimakase/.
  3. Enable Vimakase in Settings → Community plugins.

Development

The repo pins Node through mise; mise install once, or use your own Node 24.

npm install
npm run dev     # watch build
npm run build   # typecheck + production build
npm run lint    # Obsidian's plugin lint rules
npm run check   # lint + build, the gate the release runs behind

npm install points core.hooksPath at .githooks, whose pre-push hook runs npm run check, so a broken build cannot leave the machine. git push --no-verify skips it.

Release: write what changed under ## Unreleased in CHANGELOG.md, then npm version patch (bumps package.json, manifest.json and versions.json, dates the Unreleased section, commits and tags without a v), then git push --follow-tags. The tag push triggers .github/workflows/release.yml, which checks the tag against the manifest, builds, attests build provenance and creates the GitHub release with main.js, manifest.json and styles.css attached. Obsidian picks the release up on its own.

npm run link:dev -- <vault> links this working copy into a vault as a separate plugin, Vimakase (dev), so the community build can stay installed next to it. Reload plugins in Obsidian after linking or rebuilding, and keep only one of the two enabled, since both bind the same keys.

Caveats

The file explorer has no public API. Vimakase uses a few undocumented internals (listed in src/internals.ts), so an Obsidian update can break it until Vimakase is updated. File operations use the public API.

Credits

Inspired by LazyVim, neo-tree.nvim and Sidebar Keyboard Navigation.

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.