| .github/workflows | ||
| tests | ||
| .gitignore | ||
| CHANGELOG.md | ||
| esbuild.config.mjs | ||
| eslint.config.mjs | ||
| key-engine.d.mts | ||
| key-engine.mjs | ||
| LICENSE | ||
| main.ts | ||
| manifest.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| SECURITY.md | ||
| styles.css | ||
| tsconfig.json | ||
| versions.json | ||
Vimium Navigation
Keyboard-first, modal navigation for Obsidian, inspired by Vimium.
Vimium Navigation starts in Normal mode, where printable keys control the interface instead of editing your note. Press i to enter Insert mode, or click any editable field to enter Insert mode automatically. Press Esc to return to Normal mode.
Features
- Scroll notes and views with Vim-style keys.
- Show compact keyboard hints over visible links, buttons, tabs, ribbon controls, and sidebar items.
- Search and open notes without leaving the keyboard.
- Navigate note history and workspace tabs.
- Find text in the active note with
/,n, andN. - Copy and open
obsidian://note links through the clipboard. - Follow the active vault theme and accent color.
- Configure scrolling, hint characters, and the mode badge.
Shortcuts
Press ? in Normal mode to open the complete in-app reference.
| Keys | Action |
|---|---|
j / k |
Scroll down / up |
h / l |
Scroll left / right |
gg / G |
Scroll to top / bottom |
d / u |
Scroll half a page down / up |
f / F |
Follow a visible target / open a note target in a new tab |
i / Esc |
Enter Insert / Normal mode |
gi |
Focus the first editable field |
/ |
Find in the active note |
n / N |
Next / previous match |
o / O |
Search notes / open in a new tab |
b / B |
Open a note / open in a new tab |
T |
Search open workspace tabs |
H / L |
Previous / next note in plugin history |
t |
Open a new workspace tab |
J / K |
Previous / next workspace tab |
g0 / g$ |
First / last workspace tab |
yt |
Duplicate the current note tab |
x / X |
Close / restore a note tab |
yy |
Copy the current note's obsidian:// URL |
p / P |
Open a clipboard note link / open in a new tab |
r |
Reload the active note |
Browser-specific concepts are mapped to native Obsidian equivalents: browser tabs become workspace tabs, URLs and bookmarks become notes, and link hints include Obsidian controls.
Installation
Requires Obsidian 1.5.0 or newer.
Community plugins
Vimium Navigation is available in the official Obsidian Community Plugins directory. You can download and install it from the Vimium Navigation community page.
- Open Settings → Community plugins.
- Select Browse and search for Vimium Navigation.
- Select Install, then Enable.
Manual installation
Download main.js, manifest.json, and styles.css from the latest GitHub release. Place them in:
<vault>/.obsidian/plugins/vimium-navigation/
Reload Obsidian, then enable Vimium Navigation under Community plugins.
Settings
- Smooth scrolling controls animated scrolling.
- Scroll step controls the distance moved by
j,k,h, andl. - Hint characters controls the alphabet used for link labels.
- Show mode badge toggles the Normal/Insert indicator.
Privacy and security
Vimium Navigation:
- Does not collect telemetry or analytics.
- Does not make network requests.
- Does not require an account or paid service.
- Does not display advertising.
- Does not read or write files outside the standard Obsidian APIs.
- Uses clipboard access only when you invoke
yy,p, orP.
Settings are stored through Obsidian's plugin data API.
Development
Requirements: Node.js 18 or newer and pnpm.
pnpm install
pnpm check
Useful commands:
pnpm dev # watch and rebuild main.js
pnpm test # run key-sequence tests
pnpm build # type-check and create a minified production bundle
The repository intentionally ignores main.js; compiled files are attached to GitHub releases.
Release process
- Update the version in
manifest.json,package.json, andversions.json. - Commit and push the source.
- Create and push a tag matching the manifest version exactly, without a
vprefix—for example0.1.0. - The release workflow verifies, builds, and attaches
main.js,manifest.json, andstyles.cssto a GitHub release.
Acknowledgements
This independent project is inspired by the keyboard model of the Vimium browser extension. It is not affiliated with or endorsed by the Vimium or Obsidian projects.