VimNav Documentation
Complete guide to vim-style browser navigation with keyboard shortcuts, advanced features, and configuration options.
Quick Reference
Press ? anytime in VimNav to see the help overlay with all keybindings.
π Getting Started
Installation
VimNav is available as a Chrome extension. Follow these steps to get started:
- Install VimNav from the Chrome Web Store
- Pin the extension to your toolbar for easy access
- Visit any webpage and start using vim keybindings immediately
First Steps
Once installed, VimNav is immediately active on all web pages. Try these basic commands:
Basic Usage Patterns
VimNav follows vim's modal philosophy. You're always in one of several modes:
- Normal Mode - Default mode for navigation and commands
- Insert Mode - For typing in form fields (enters automatically)
- Visual Mode - For text selection and manipulation
- Hint Mode - For keyboard-only link clicking
π Mode System
VimNav uses vim's modal system for different types of interaction.
Normal Mode
The default mode for navigation and commands. Most keybindings work in normal mode.
Insert Mode
Automatically activated when you focus input fields, text areas, or contenteditable elements.
Visual Mode
Select and manipulate text elements on the page. See the Visual Mode section for details.
Hint Mode
Click links and interactive elements using keyboard hints. See the Hint Mode section for details.
π VimEdit Mode
VimNav includes a powerful VimEdit feature that opens a full vim editor for any input field on web pages. This allows you to edit form fields, text areas, and contenteditable elements using vim's complete editing capabilities.
Entering VimEdit Mode
The VimEdit Interface
Once a field is selected, VimEdit opens with:
- Full vim modal interface with transparent overlay
- Line numbers for multi-line editing
- Color-coded status bar showing current mode and cursor position
- Command line for vim commands (
:w,:q, etc.) - Visual mode indicators with distinct colors for different selection types
Vim Modes in VimEdit
Normal Mode (Default)
Standard vim navigation and text manipulation:
Movement
Editing
Mode Transitions
Insert Mode
Standard text insertion with vim keybindings:
Visual Mode
Text selection and manipulation with enhanced visual feedback:
Character Visual Mode (v)
Line Visual Mode (V)
Operations
Command Mode
Vim command-line interface:
Mode Indicators
VimEdit provides visual feedback through color-coded indicators:
Status Bar Mode Colors
Visual Selection Colors
Smart Clipboard System
VimEdit automatically detects whether clipboard content should be pasted as lines or characters:
Line-based Operations
Character-based Operations
Usage Examples
Basic Form Editing
- Navigate to any web form
- Press Ctrl+i to see input field hints
- Type the hint letter (e.g., a) to select first field
- Edit using vim commands:
- i to start typing
- Esc to return to normal mode
- :wq to save and close
Advanced Text Manipulation
- Ctrl+i β b (Select field with hint 'b')
- gg (Go to start)
- dw (Delete first word)
- u (Undo deletion)
- d3w (Delete 3 words)
- Ctrl+r (Redo)
- A (Insert at end of line)
- :wq (Save and exit)
- Use w/e for precise punctuation handling, W/E for speed
- df{char} includes the character, dt{char} excludes it
- Blue highlighting for character selection, orange for line selection
- Ctrl+I toggles maximize mode for distraction-free editing
π Search & Find
Search within page content using vim-style search commands.
Page Search
π Tab Management
VimNav provides powerful tab navigation and management inspired by NERDTree.
Opening Tab Navigator
Tab Navigation
When the tabs overlay is open:
Use move mode to reposition tabs without leaving the overlay.
Grouped tabs respect the destination groupβs expansion state, and VimNav preserves your scroll position while the list refreshes so you never lose context.
Tab Actions
π― Hint Mode
Click links, buttons, and interactive elements without using the mouse.
Using Hint Mode
Hint Targets
Hint mode automatically detects and highlights:
- Links (
<a>elements) - Buttons (
<button>elements) - Form inputs (input, select, textarea)
- Clickable elements with click handlers
-
Elements with
role="button"ortabindex
ποΈ Visual Mode
Select and manipulate text content on web pages using vim-style text selection.
Entering Visual Mode
Text Selection
Once you've selected an element and entered text selection mode:
Text Operations
π Marks System
Create bookmarks within pages to quickly jump to specific locations.
Setting Marks
Jumping to Marks
β¨οΈ Command Mode
Execute vim-style commands for advanced browser control and navigation.
Entering Command Mode
Available Commands
π°οΈ History Search
Search and navigate through your browser history with vim-style controls.
History Navigation
History Search
Use the URL search overlay (o) to search through your browser history:
- Type keywords to search page titles and URLs
- Navigate results with j/k
- Press Enter to navigate to selected history item
βοΈ Extension Configuration
Customize VimNav to match your preferences and workflow across every tab and window.
Accessing Settings
You can also open Extensions β VimNav β Options or click the VimNav toolbar icon to launch the side panel configuration view.
Extension Options Overview
- Scroll Behavior - Adjust smooth scrolling and scroll distance
- Hint Appearance - Customize hint styling and colors
- Theme Options - Switch between palettes or upload custom themes
- Keybinds Editor - View, edit, and customize all keyboard shortcuts (see Keybinds Editor section)
- Site Exclusions - Disable VimNav on specific websites
- Search Integration - Configure default search engine
Theme Options
VimNav 1.3+ ships with refreshed built-in palettes and the ability to import custom iTerm2 color schemes. The active theme instantly recolors overlays, the side panel, and the options UI with no page refresh required.
Selecting Themes
The side panel exposes a `Theme List` that mirrors the options page. Single-clicking a palette (or selecting its radio control) applies it immediately and syncs the active colors across every open tab and window. The help overlay (?) now reflects the currently selected palette so the keyboard reference always matches what you see.
Uploading Custom Themes
Use the `Upload Theme` button in the side panel to import a .itermcolors file. After choosing a file, VimNav validates and stores the theme before adding it to the list.
- Max file size: 200 KB
- Format: Valid iTerm2 XML; malformed files surface an error toast
- Storage: Free tier keeps up to two custom themes at a time; delete one to upload another
Themes adopt the embedded display name when available, otherwise VimNav falls back to the filename. Each upload persists its metadata (timestamp, source type) so you can audit when palettes were added.
Persistence & Sync
- Theme data is stored in
chrome.storage.localand restored automatically when Chrome reopens. - Background, content, and side panel contexts listen for storage and runtime events to broadcast changes instantly.
- Any active overlays update in place, keeping scroll position and focus while colors transition.
Removing Themes & Fallback
- Deleting the active custom theme automatically falls back to the VimNav default palette.
- The `Delete` button is disabled for built-in themes; custom themes prompt you to confirm removal to prevent accidental loss.
- Once removed, the theme disappears from both the options page and side panel lists within the same sync cycle.
β¨οΈ Keybinds Editor
VimNav includes a built-in keymap editor that allows you to view, edit, and customize all keyboard shortcuts. The editor uses a Vim-inspired keymap system with modal editing (Normal, Insert, Visual modes) and context-specific bindings (overlays, states). All keybindings are fully customizable and changes take effect immediatelyβno page reload required.
Accessing the Editor
Open the keymap editor using one of these methods:
You can also bind a custom key to the keymap-editor.open command.
Editor Interface
The editor features a three-tab interface:
- Bindings Tab - Browse, search, and edit all keybindings
- Info Tab - View keymap metadata, warnings, and conflict detection
- Docs Tab - Quick reference for the keymap system
Viewing Keybindings
Keybindings are displayed using this DSL format:
Examples
Navigation Keys
Editing Keybindings
To edit an existing keybinding:
- Navigate to a binding with j/k or search with /
- Press Enter to enter edit mode
- Modify the Keys field (e.g., change
jto<C-j>) - Update the Description field if desired
- Press Enter to save or Escape to cancel
Context-Aware Escape Behavior
- While editing: Cancels edit, returns to browse mode (editor stays open)
- While browsing: Closes the entire editor
Adding New Keybindings
To add a new keybinding:
- Navigate to where you want to insert the binding
- Press a to add a new binding
- Fill in all required fields in the DSL format:
- Press Enter to save
Key Notation Reference
<C-x><A-x><S-x><M-x><Space><CR><Esc><BS><Tab>g gDeleting Keybindings
To delete a keybinding:
- Navigate to the binding you want to remove
- Press d
- Confirm the deletion when prompted
Deleted bindings are removed immediately and persist across sessions.
Conflict Detection
VimNav automatically detects conflicting keybindings. Conflicts are indicated with badges showing β οΈ N where N is the number of conflicts.
Example Conflicts
Hovering over a conflict badge shows details: "Conflicts with 1 other binding(s): scroll.bottom"
Resolving Conflicts
- Navigate to the conflicting binding
- Press Enter to edit
- Change keys to something unique
- Press Enter to save
- Conflict warning disappears
Exporting Keymaps
To export your current keymap:
- Press x from any tab in the editor
- File
vimnav-keymap.jsondownloads automatically - JSON contains all current keybindings with metadata
Export Use Cases
- Backup before making major changes
- Share custom keymaps with others
- Edit manually in a text editor
- Version control your configuration
Importing Keymaps
To import a keymap:
- Press i from any tab in the editor
- Select a valid JSON keymap file
- File is validated and loaded immediately
- Invalid files show error toast with details
Validation Errors
Import may fail due to:
- Invalid JSON syntax
- Missing required fields (keys, command, modes)
- Unknown modes or contexts
- Malformed key notation
Resetting to Defaults
To reset all keybindings to defaults:
- Press R from the keymap editor
- Confirm the reset action
- All custom bindings are cleared
- Default VimNav keymap is restored
Modes and Contexts
Vim-Style Modes
- n - Normal mode (default navigation mode)
- i - Insert mode (when typing in input fields)
- v - Visual mode (text selection)
Common Contexts
- root - Base page navigation
- tabs-overlay - Tabs overlay
- hint - Hint overlay (link navigation)
- keymap-editor - Keymap editor itself
- command-palette - Command palette
- input-select - Input selector overlay
Context-specific bindings only work when that context is active (e.g., tabs-overlay bindings only work when tabs overlay is open).
Command Categories
VimNav uses a category.action naming pattern for consistency:
- scroll.* - Page scrolling (scroll.down, scroll.pageUp, scroll.top)
- tabs.* - Tab management (tabs.open, tabs.navigateDown, tabs.activate)
- hint.* - Link navigation (hint.open, hint.click)
- history.* - Browser history (history.back, history.forward)
- mode.* - Mode switching (mode.insert, mode.visual)
- marks.* - Marks system (marks.startCreate, marks.startNavigate)
- search.* - In-page search (search.start, search.next)
Persistence & Sync
- VimNav writes keymap data to
chrome.storage.local - Changes take effect immediately across all tabs and windows
- Reopening Chrome restores custom keymap automatically
- The editor itself updates live when saving changes (no need to close and reopen)
Example Customizations
Here are some common customization examples:
Best Practices
- Export before major changes - Keep backups of working configurations
- Test incrementally - Make one change at a time and test
- Use consistent patterns - Follow
category.actionnaming for custom commands - Be specific with descriptions - Help your future self understand each binding
- Leverage contexts - Use context-specific bindings to avoid conflicts
- Respect browser shortcuts - Avoid overriding critical browser keys (Ctrl+T, Ctrl+W, etc.)
- Document your customizations - Add clear descriptions for custom bindings
Troubleshooting
Keybinding not working after edit
- Verify the binding saved correctly (check in editor list)
- Ensure mode is correct (
nfor normal page navigation) - Ensure context is correct (
rootfor general page navigation) - Check browser console for keymap errors
- Try reloading the page
Export/Import issues
- Check browser console for errors
- Ensure browser allows file downloads (export)
- Verify JSON file is valid (import)
- Try exporting default keymap first to see correct format
Conflict warnings
- Last binding wins at runtime
- Use different keys, or different modes/contexts to resolve
- Check Info tab for full conflict report
Editor not opening
- Ensure command palette is working (: key)
- Check that the VimNav version is
v1.4.1or greater - Try reloading the extension
π§ Settings
Detailed settings and customization options for VimNav.
General Settings
- Enable/Disable - Toggle VimNav on/off globally
- Scroll Speed - Adjust scrolling sensitivity
- Smooth Scrolling - Enable/disable smooth scroll animation
Visual Settings
- Hint Colors - Customize hint appearance
- Overlay Themes - Choose overlay styling
- Font Settings - Adjust font size and family for overlays
Advanced Settings
- Debug Mode - Enable debugging features
- Performance - Memory and performance tuning
π οΈ Troubleshooting
Common issues and solutions for VimNav.
Common Issues
VimNav Not Working
- Check that the extension is enabled in Chrome extensions
- Verify the site isn't in your exclusions list
- Try pressing EscEsc to ensure focus
Keybindings Not Responding
- Make sure you're not in an input field (press Esc)
- Check for conflicts with other extensions
- Try refreshing the page
Hints Not Appearing
- Ensure there are clickable elements on the page
- Check if the page has custom styling that hides hints
- Try zooming out if hints are positioned incorrectly
Theme Upload Issues
- Verify the file is a valid
.itermcolorsexport under 200 KBβlarger or malformed uploads trigger an error toast - If a theme does not apply immediately, open DevTools to check for storage errors and reopen the side panel or options page once storage recovers
- Only perform a manual browser refresh if Chrome extension storage is temporarily unavailable
Getting Help
If you continue experiencing issues:
- Visit our feedback page
- Check the console for error messages (F12 β Console)
- Report bugs with specific steps to reproduce