✅ Overview
Navigation in Scimax VS Code follows three main paradigms:
Outline Navigation - Move between structural elements (headings, source blocks)
Fuzzy Search - Swiper-style incremental search with live preview
Jump Navigation - Avy-style quick jumps to visible text using character hints
Speed Commands - Single-key navigation when at heading start
See also:
Document Structure for information about headlines and folding
Keybindings for a complete reference of keyboard shortcuts
✅ Fuzzy Search (Swiper-Style)
Fuzzy search provides incremental search with live preview, inspired by Emacs Swiper. As you type, matching lines are filtered and the cursor moves to show a live preview.
✅ Search Current File
| Command | Key Binding | Description |
|---|---|---|
| scimax.fuzzySearch | C-c s | Search lines in current file |
Opens a quick pick showing all non-empty lines in the current file. Features:
Live preview - cursor moves to selected line as you browse
Fuzzy matching - type space-separated terms, all must match
Match highlighting - matching terms are highlighted in results
Cancel restores position - press Escape to return to original location
Example workflow:
Press C-c s to open fuzzy search
Type "function calculate" to find lines with both words
Use arrow keys or continue typing to narrow results
Press Enter to jump to selected line
Press Escape to cancel and return to original position
✅ Search Open Files
| Command | Key Binding | Description |
|---|---|---|
| scimax.fuzzySearchOpenFiles | C-c Shift-s | Search lines in all open files |
Like fuzzy search but searches across all open buffers/files. Results are grouped by file with file separators.
Use this to:
Find text across multiple open files
Navigate between related files quickly
Review related code across different modules
✅ Search Outline (Headings/Symbols)
| Command | Key Binding | Description |
|---|---|---|
| scimax.fuzzySearchOutline | C-c M-s | Search headings and symbols |
Searches only structural elements:
Org files - Headlines (lines starting with *)
Markdown files - Headings (lines starting with #)
Code files - Function/class definitions
This provides a fast way to navigate document structure without seeing every line.
Icons indicate heading level:
$(symbol-class) - Top-level or class
\((symbol-class) \)(symbol-class) - Second level
$(symbol-method) - Functions/methods
✅ Document Symbol Provider
VS Code's built-in outline view and breadcrumb navigation are enhanced with org-mode support.
✅ Outline View
The Outline panel (View -> Outline) shows document structure:
For org files:
Document title (from #+TITLE:)
All headings in hierarchical structure
TODO state indicators (box for TODO, check for DONE)
Tags and priorities shown as details
Source blocks (labeled with language)
Tables
Drawers
Symbols use semantic icons:
$(symbol-class) - Level 1 headings
$(symbol-method) - Level 2 headings
$(symbol-function) - Level 3 headings
$(symbol-key) - TODO items
$(symbol-event) - DONE items
✅ Quick Outline
Press C-S-O (or s-S-O on Mac) to open VS Code's quick outline:
Shows all document symbols
Type to filter
Press Enter to jump to symbol
This works similar to fuzzySearchOutline but uses VS Code's native UI.
✅ Go to Definition
While not Scimax-specific, VS Code's go to definition works in org files for:
Links (Other File)
Internal links ([[*Heading Name]])
Reference citations (requires org-ref extension)
| Command | Key Binding | Description |
|---|---|---|
| editor.action.revealDefinition | F12 | Go to definition |
| editor.action.peekDefinition | M-F12 | Peek definition |
| editor.action.goToReferences | S-F12 | Find all references |
✅ Speed Commands
Speed commands provide single-key navigation when the cursor is at the start of a heading. See the table in [[*Sibling Navigation (Speed Commands)]] above, or press ? at a heading start to see all speed commands.
Navigation speed commands (available at heading start):
| Key | Command | Description |
|---|---|---|
| n | Next visible heading | Move to next heading |
| p | Previous visible heading | Move to previous heading |
| f | Next sibling heading | Next heading at same level |
| b | Previous sibling heading | Previous heading at same level |
| u | Parent heading | Jump to parent heading |
| j | Jump to heading | Fuzzy search headings |
| g | Go to... submenu | More navigation options |
To enable speed commands:
Open settings (C-,)
Search for "scimax speed commands"
Enable "Scimax: Speed Commands Enabled"
Or add to settings.json:
{
"scimax.speedCommandsEnabled": true
}
✅ Keybinding Reference
All navigation keybindings:
✅ Global (All Modes)
| Key Binding | Command | Description |
|---|---|---|
| C-c s | scimax.fuzzySearch | Fuzzy search current file |
| C-c S-s | scimax.fuzzySearchOpenFiles | Fuzzy search open files |
| C-c M-s | scimax.fuzzySearchOutline | Fuzzy search outline |
| C-S-O | VS Code Quick Outline | Jump to symbol |
✅ Org/Markdown Mode
| Key Binding | Command | Description |
|---|---|---|
| C-c C-j | scimax.org.jumpToHeading | Jump to heading |
✅ Speed Commands (at heading start)
| Key | Command | Description |
|---|---|---|
| n | Next heading | Move to next heading |
| p | Previous heading | Move to previous heading |
| f | Next sibling | Next heading at same level |
| b | Previous sibling | Previous heading at same level |
| u | Parent heading | Jump to parent heading |
| j | Jump to heading | Fuzzy search headings |
✅ Tips and Workflows
✅ Finding Code in Large Files
For code files:
C-c M-s - Search outline to find function/class
scimax.jump.gotoSymbol - Jump to visible function
C-S-O - VS Code quick outline for all symbols
✅ Precision Jumping
For maximum precision:
scimax.jump.gotoChar2 - Two characters gives fewer matches
scimax.jump.gotoSubword - Jump within camelCase names
scimax.jump.gotoWord with starting character - Filter words
✅ Source Block Workflows
When working with literate programming:
scimax.ob.jumpToBlock - Find block by name/language
scimax.ob.nextBlock/previousBlock - Navigate between blocks
scimax.ob.jumpToResults - Check execution results
Execute block (C-c C-c)
Jump to results to verify output
✅ Configuration
✅ Enable/Disable Features
{
// Enable speed commands (single-key navigation at heading start)
"scimax.speedCommandsEnabled": true,
// Maximum number of items in fuzzy search (performance)
"scimax.fuzzySearch.maxResults": 1000
}
✅ Custom Keybindings
Add custom keybindings in keybindings.json:
[
// Custom jump to character binding
{
"key": "ctrl+;",
"command": "scimax.jump.gotoChar",
"when": "editorTextFocus"
},
// Custom next source block binding
{
"key": "ctrl+shift+n",
"command": "scimax.ob.nextBlock",
"when": "editorTextFocus && editorLangId == 'org'"
}
]
✅ Troubleshooting
✅ Fuzzy Search Not Working
If fuzzy search doesn't show results:
Check that the file has non-empty lines
Try searching with simpler terms
Check if file is too large (increase maxResults setting)
✅ Speed Commands Not Triggering
Speed commands require:
scimax.speedCommandsEnabled set to true
Cursor at column 0 (start of line)
Cursor on a heading line (starts with * in org, # in markdown)
Move cursor to beginning of heading with Home key, then try speed command.
✅ Jump Labels Not Appearing
If jump commands don't show labels:
Make sure there are visible matches in the viewport
Check that the editor has focus
Try scrolling to ensure matches are visible
✅ See Also
Document Structure - Headlines, folding, and outline manipulation
Keybindings - Complete keybinding reference
Source Blocks - Working with code blocks
Links - Following and managing links
✅ Comparison with Emacs
Scimax VS Code navigation is inspired by Emacs packages:
| Emacs Package | VS Code Equivalent | Notes |
|---|---|---|
| Avy | scimax.jump.* commands | Character-based jumping |
| Swiper | scimax.fuzzySearch | Incremental search with preview |
| Helm/Ivy | Quick Pick UI | VS Code native fuzzy picker |
| Org speed keys | Speed commands | Single-key commands at heading |
| Imenu | Document symbol provider | Outline view and breadcrumbs |
Key differences:
VS Code uses Quick Pick UI instead of minibuffer
Some Emacs packages have richer configuration
VS Code navigation history is cross-file by default
Speed commands in VS Code require explicit enable
✅ Index
Avy-style navigation: [[*Jump Navigation (Avy-Style)]]
Breadcrumbs: [[*Breadcrumb Navigation]]
Fuzzy search: [[*Fuzzy Search (Swiper-Style)]]
Go to definition: [[*Go to Definition]]
Heading navigation: [[*Heading Navigation]]
Jump to character: [[*Jump to Character]]
Jump to line: [[*Jump to Line]]
Jump to symbol: [[*Jump to Symbol]]
Jump to word: [[*Jump to Word]]
Navigation history: [[*Navigation History]]
Outline view: [[*Outline View]]
Sibling navigation: [[*Sibling Navigation (Speed Commands)]]
Source blocks: [[*Source Block Navigation]]
Speed commands: [[*Speed Commands]]
Swiper-style search: [[*Fuzzy Search (Swiper-Style)]]