Skip to content

Sourav9063/flash-nvim-for-vscode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

138 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Flash Nvim for VSCode

Flash Nvim for VSCode - Fast, precise, label-based code navigation inspired by Neovim's flash.nvim plugin. The most popular Neovim navigation plugin, now available for Visual Studio Code.

Version Installs Rating

Table of Contents activate

Overview

Flash Nvim for VSCode brings the power of Neovim's most popular navigation plugin, flash.nvim, to Visual Studio Code. You do NOT need to know or use Vim to benefit from this extension. It's designed to be a fast, intuitive, and modern navigation tool for every developer.

This extension provides lightning-fast, label-based code navigation that lets you jump to any visible location with just 2-3 keystrokes.

Why Choose Flash Nvim for VSCode?

  • ⚑ Lightning Fast: Jump anywhere on screen in milliseconds
  • 🎯 Precise Navigation: Label-based system eliminates guesswork
  • πŸ” Smart Auto-Scroll: Automatically scrolls to matches when they're outside the visible range
  • 🧠 Smart Symbol & Treesitter Selection: Instantly select entire functions, blocks, or scopes - turns 10+ keystrokes into 2-3 for daily copy/cut/refactor tasks
  • 🌐 Universal: Works with vscode.dev (VS Code for Web)
  • πŸ‘₯ Built for Everyone: Absolutely no Vim knowledge required. While it's inspired by a Neovim plugin, it uses standard VS Code-friendly shortcuts (Alt+F) and is designed to be intuitive for every developer, regardless of their editor background.
  • πŸ”₯ Battle-Tested: Based on Neovim's most loved navigation plugin
  • 🎨 Highly Customizable: Adjust colors, labels, and behavior to your preference
  • πŸ” Vim Jumplist Integration: Uses VSCodeVim's jumplist when jumping, ensuring '' and ctrl+o work as expected.

Perfect Alternative To

Looking for a modern alternative to EasyMotion, Jumpy, Jumpy2, or AceJump? Flash Nvim for VSCode offers superior performance, a more intuitive label system, and zero learning curve for non-Vim users. It's the most efficient way to navigate code in VS Code today.

Installation

Install from VS Code Marketplace

Method 1: Direct Install (Recommended)

  1. Click here to install Flash Nvim for VSCode directly from the VS Code Marketplace
  2. Click the "Install" button
  3. VS Code will open and install the extension automatically

Method 2: Install from VS Code

  1. Open Visual Studio Code
  2. Go to the Extensions view (Ctrl+Shift+X on Windows/Linux or Cmd+Shift+X on macOS)
  3. Search for "flash nvim for vscode" or "flash vscode"
  4. Look for the extension by souravahmed
  5. Click Install
  6. Reload VS Code if prompted

Method 3: Command Line

code --install-extension souravahmed.flash-vscode-latest

Usage

Tutorial

flash.tutorial.mp4
  1. Activate Navigation: Flash VSCode provides two main functionalities:

    • flash-vscode.start: alt+f Moves the cursor directly to the selected target.

    • alt+f while some text is selected will search for the selected text.

      flash jump

    • Press alt+f or alt+shift+f then <search> then enter to goto next match, shift+enter to goto previous match.

    • Auto-scroll: If all matches are outside the visible range, Flash automatically scrolls to show the nearest match - no manual scrolling needed!

    • Press alt+f or alt+shift+f then enter to search previously entered query.

    • Select text and press alt+f or alt+shift+f then enter to search and mark the selected text.

    • Press ctrl+alt+enter to mark all symbols (functions, classes, variables) in the current file.

    • Press alt+enter for treesitter-style selection - marks hierarchical syntactic scopes (expressions, statements, blocks) around cursor for smart selection.

    • New: Press shift+alt+enter for Remote Treesitter Selection - jump to a location and immediately trigger treesitter selection there.

    • Press alt+j or alt+k to mark all the next line or previous line.

      flash enter

    • Press alt+f then alt+j or alt+k to mark all the next line or previous line.

      Next Line Previous Line
      Screenshot (178) Screenshot (176)
  2. πŸš€ Smart Symbol & Treesitter Selection - Game Changer for Daily Coding:

Screen.Recording.2025-11-13.at.2.01.00.PM.mov
Treesitter Label Treesitter Selection
Screenshot 2025-11-13 at 2 11 14 PM Screenshot 2025-11-13 at 2 11 31 PM

Dramatically reduce the friction of selecting, cutting, and copying code. No more tedious click-dragging, Shift+Arrow key combos, or hunting for scope boundaries!

Symbol Navigation (ctrl+alt+enter):

  • Instantly jump to and select any function, class, or variable in your file
  • Press alt+f β†’ ctrl+alt+enter to label all symbols
  • Hit a label key to select the entire symbol definition (from start to end)
  • Perfect for: Quickly selecting functions to cut/copy/refactor

Treesitter Selection (alt+enter):

  • The fastest way to select code scopes - expressions, statements, blocks, functions
  • Press alt+enter to label all scopes
  • Labels appear on both opening and closing boundaries ({ and }, function start/end, etc.)
  • Includes sticky scroll context - parent scopes visible at the top
  • Select a label to automatically select the entire scope
  • No more manual "find the matching brace" - LSP knows your code structure!

Remote Treesitter Selection (shift+alt+enter):

  • The Ultimate Flow State Tool.
  • Spot a block of code you need? Don't move your cursor there first.
  • Press shift+alt+enter β†’ Jump to the location β†’ Flash immediately shows Treesitter scopes at the destination.
  • Select the scope you want. Done.
  • Zero friction context switching. Grab code from anywhere without losing your mental stack.

Why this matters for daily programming:

  • Want to copy a function? alt+f β†’ alt+enter β†’ hit the label β†’ Ctrl+C βœ…
  • Need to select an if-block? ctrl+alt+enter β†’ hit the label β†’ Done βœ…
  • Refactoring nested code? Jump between scope boundaries instantly βœ…
  • Turns 10+ keystrokes into 2-3 keystrokes for common selection tasks
  1. Selection:

    • flash-vscode.startSelection: alt+shift+f Extends the selection from the original position to the target.

      flash select

  2. Preview

    • Added a preview in status bar.

      image
  3. Cancel Navigation:

    • Press Backspace to remove the last character of your query, or press Escape to exit jump mode.

Configuration

Case Sensitivity

By default, flash-vscode's search is using smart case. Meaning if any uppercase latter exists then becomes case sensitive, else becomes case insensitive. To change this behavior, add to your settings:

{
  "flash-vscode.caseSensitive": false
}

Appearance Customization

The following configuration options allow you to customize the visual appearance of Flash VSCode:

{
  "flash-vscode.dimOpacity": "0.65",
  "flash-vscode.matchColor": "#3e68d7",
  "flash-vscode.matchFontWeight": "bold",
  "flash-vscode.labelColor": "#ffffff",
  "flash-vscode.labelBackgroundColor": "#ff007c",
  "flash-vscode.labelQuestionBackgroundColor": "#3E68D7",
  "flash-vscode.labelFontWeight": "bold",
  "flash-vscode.labelKeys": "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_=+[]{}|;:'\",.<>/?"
}
  • flash-vscode.dimOpacity: Opacity used to dim text.
  • flash-vscode.matchColor: Color used for matched text.
  • flash-vscode.matchFontWeight: Font weight for matched text.
  • flash-vscode.labelColor: Color used for label text.
  • flash-vscode.labelBackgroundColor: Background color for labels.
  • flash-vscode.labelQuestionBackgroundColor: Background color for question labels.
  • flash-vscode.labelFontWeight: Font weight for label text.
  • flash-vscode.labelKeys: Characters to use for labels.

VSCodeVim Integration (Optional)

To invoke Flash VSCode commands from VSCodeVim, in your settings.json, add entries to "vim.normalModeKeyBindingsNonRecursive" as follows:

"vim.normalModeKeyBindingsNonRecursive": [
  {
    "before": ["f"],
    "commands": ["flash-vscode.start"]
  },
  {
    "before": ["F"],
    "commands": ["flash-vscode.startSelection"]
  },
  {
    "before": ["t"],
    "commands": ["flash-vscode.jump.treesitterSelection"]
  },
  {
    "before": ["T"],
    "commands": ["flash-vscode.remoteTreesitterSelection"]
  },
  {
    "before": [ "<BS>" ],
    "commands": [ "flash-vscode.backspace" ]
  },
  {
    "before": [ "<Esc>" ],
    "commands": [ "flash-vscode.exit" ]
  }
]

This configuration triggers Flash VSCode when you press s or S in normal mode.

Acknowledgements

  • flash.nvim for the original ideas.
  • Jumpy2 for some of the implementation details.
  • flash.vscode flash.vscode(latest) extension is supper set of this extension.
  • CVim-PR CVim for ux improvement ideas.

Keywords & Search Terms

Popular Searches: flash.nvim, flash nvim, flash.nvim vscode, flash nvim vscode, flash vscode, flash.vscode, neovim, nvim, vim navigation, vscode navigation, code jump, label jump, easymotion alternative, jumpy alternative, acejump alternative, quick navigation, cursor jump, code navigation extension, vscode jump to, fast navigation, keyboard navigation, vim motions, vscodevim extension, neovim vscode, vim for vscode, treesitter vscode, smart selection, scope selection, symbol navigation, code scope selection

Related Extensions: VSCodeVim, EasyMotion, Jumpy, Jumpy2, AceJump, Vim, Neovim

Use Cases: code navigation, quick jump, label-based navigation, keyboard-driven development, productivity tools, vim workflow, neovim workflow, fast coding, efficient navigation, smart code selection, scope-based selection, treesitter selection, symbol jumping, function selection, block selection, code refactoring, quick copy paste, efficient code editing