Flash

pending

by Vasiliy Ivanov

Neovim-style navigation. Jump anywhere with minimal keystrokes.

3 starsUpdated 2mo agoMITDiscovered via Obsidian Unofficial Plugins
View on GitHub

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.

  1. Activate Flash Mode (s in Vim normal mode, or via command)
  2. Start typing — matches highlight in real-time
  3. After 2 characters (configurable), labels appear next to matches
  4. Press a label key to jump, or keep typing to narrow results
  5. If one match remains, auto-jumps immediately

Controls:

  • Type any character to search or select a label
  • Backspace to delete characters
  • Escape or click to cancel

Jump to Link

Quick navigation between links in your note.

  1. Activate Jump to Link
  2. Labels appear on all links
  3. 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.

  1. Activate Jump to Anywhere
  2. Labels appear on all regex matches (default: words with 3+ characters)
  3. Press a label to jump

Installation

Community Plugins (Recommended)

  1. Open Settings → Community Plugins
  2. Click Browse and search for "Flash"
  3. Click Install, then Enable

Manual

  1. Download main.js, manifest.json, styles.css from Releases
  2. Create folder: <vault>/.obsidian/plugins/obsidian-flash/
  3. Copy files into the folder
  4. 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

SettingDescriptionDefault
Characters for hintsLetters used for labels (home row first recommended)asdfghjkl...
Auto-jump single targetSkip label when only one matchOn

Flash Mode

SettingDescriptionDefault
Minimum charactersCharacters needed before showing labels2
Case sensitiveMatch case when searchingOff
Jump positionWhere cursor lands: match start/end, word start/endMatch end
Jump position (Shift)Position when holding ShiftMatch start

Flash Mode Appearance

SettingDescriptionDefault
Label backgroundBackground color for labels#F47D1A
Label text colorText color for labels#000000
Match highlightColor for matched characters#F47D1A
Dim opacityOpacity of non-matching text (0-1)0.4
Inherit fontLabels match surrounding text fontOn

Jump to Anywhere

SettingDescriptionDefault
Regex patternPattern for matching targets(?:^|[^\p{L}\p{N}_])([\p{L}\p{N}]{3,})...
Jump positionWhere cursor landsAfter last char
Jump position (Shift)Position when holding ShiftFirst 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:

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.