Flash
pendingby Vasiliy Ivanov
Neovim-style navigation. Jump anywhere with minimal keystrokes.
Flash
Neovim-style navigation for Obsidian. Jump anywhere with minimal keystrokes.
Flash brings the speed of flash.nvim and leap.nvim to Obsidian. Type a few characters, see labels appear on matches, press a label to jump instantly.
Features
- Flash Mode — Incremental search with live-updating labels. Type characters to narrow matches, press a label to jump.
- Jump to Link — Navigate to any link (
[[wiki]],[markdown](url), plain URLs) with a single keypress. - Jump to Anywhere — Regex-based navigation to jump to any word or pattern.
- Smart labels — Labels never conflict with the next character after a match, so you can keep typing naturally.
- Auto-jump — Automatically jumps when only one match remains.
- Full Unicode support — Works with Cyrillic, CJK, and any Unicode text. Cyrillic keyboard input maps to Latin labels.
- Visual feedback — Search panel shows your query, matched text highlights, non-matches dim.
How It Works
Flash Mode
The primary way to navigate. Like / search but better.
- Activate Flash Mode (
sin Vim normal mode, or via command) - Start typing — matches highlight in real-time
- After 2 characters (configurable), labels appear next to matches
- Press a label key to jump, or keep typing to narrow results
- If one match remains, auto-jumps immediately
Controls:
- Type any character to search or select a label
Backspaceto delete charactersEscapeor click to cancel
Jump to Link
Quick navigation between links in your note.
- Activate Jump to Link
- Labels appear on all links
- Press a label to jump (or open in new pane with
Shift)
Works with wiki links, markdown links, and bare URLs.
Jump to Anywhere
Regex-powered navigation to any text pattern.
- Activate Jump to Anywhere
- Labels appear on all regex matches (default: words with 3+ characters)
- Press a label to jump
Installation
Community Plugins (Recommended)
- Open Settings → Community Plugins
- Click Browse and search for "Flash"
- Click Install, then Enable
Manual
- Download
main.js,manifest.json,styles.cssfrom Releases - Create folder:
<vault>/.obsidian/plugins/obsidian-flash/ - Copy files into the folder
- Enable in Settings → Community Plugins
Vim Integration
Use with obsidian-vimrc-support:
" Flash Mode (recommended primary navigation)
exmap flash obcommand flash:search-mode
nmap s :flash<CR>
vmap s :flash<CR>
" Jump to Link
exmap jumpLink obcommand flash:jump-to-link
nmap gl :jumpLink<CR>
" Jump to Anywhere
exmap jumpAnywhere obcommand flash:jump-to-anywhere
nmap <Space>j :jumpAnywhere<CR>
Configuration
General
| Setting | Description | Default |
|---|---|---|
| Characters for hints | Letters used for labels (home row first recommended) | asdfghjkl... |
| Auto-jump single target | Skip label when only one match | On |
Flash Mode
| Setting | Description | Default |
|---|---|---|
| Minimum characters | Characters needed before showing labels | 2 |
| Case sensitive | Match case when searching | Off |
| Jump position | Where cursor lands: match start/end, word start/end | Match end |
| Jump position (Shift) | Position when holding Shift | Match start |
Flash Mode Appearance
| Setting | Description | Default |
|---|---|---|
| Label background | Background color for labels | #F47D1A |
| Label text color | Text color for labels | #000000 |
| Match highlight | Color for matched characters | #F47D1A |
| Dim opacity | Opacity of non-matching text (0-1) | 0.4 |
| Inherit font | Labels match surrounding text font | On |
Jump to Anywhere
| Setting | Description | Default |
|---|---|---|
| Regex pattern | Pattern for matching targets | (?:^|[^\p{L}\p{N}_])([\p{L}\p{N}]{3,})... |
| Jump position | Where cursor lands | After last char |
| Jump position (Shift) | Position when holding Shift | First char |
Command IDs
flash:search-mode # Flash Mode (incremental search)
flash:jump-to-link # Jump to Link
flash:jump-to-anywhere # Jump to Anywhere
CSS Customization
/* Label appearance */
.flash-label {
background: #your-color;
color: #your-text-color;
border-radius: 3px;
}
/* Matched text highlight */
.flash-highlight {
color: #your-highlight !important;
}
/* Dimmed text during Flash Mode */
.flash-active {
--flash-color: rgba(128, 128, 128, 0.5);
}
/* Search panel */
.flash-search-panel {
background: var(--background-secondary);
border-color: var(--text-accent);
}
Unicode & Cyrillic Support
Full support for non-Latin text:
- Search any script — Flash Mode finds matches in Cyrillic, CJK, or any Unicode text
- Cyrillic keyboard mapping — Type on Russian layout, labels still work (ф→a, ы→s, etc.)
- Unicode regex — Jump to Anywhere uses
\p{L}(letters) and\p{N}(numbers) for universal matching
Requirements
- Obsidian 0.15.0+
- CodeMirror 6 editor (default in modern Obsidian)
Credits
Inspired by:
- flash.nvim — The gold standard for Neovim navigation
- leap.nvim — Lightning-fast motion plugin
- obsidian-jump-to-link — Original Obsidian link jumping
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.