Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>RangeLinkNew to Visual Studio Code? Get it now.
RangeLink

RangeLink

couimet

|
26 installs
| (0) | Free
Create sharable links to code ranges in your files. Perfect for documentation, AI prompts, and team collaboration.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

RangeLink - One Keybinding. Precise References. Any AI assistant or tool.

RangeLink Logo

Version Open VSX Version License

"Claude Code today. Cursor AI tomorrow. Different shortcuts, different muscle memory."
RangeLink ends it. One keybinding. Any AI, any tool. Character-level precision. recipes/baking/chickenpie.ts#L3C14-L314C16

Why RangeLink?

Every AI coding assistant has its own way to share code — different shortcuts, different formats, different muscle memory. If you use multiple AI tools, you're constantly context-switching.

RangeLink unifies it:

  • One keybinding — Cmd+R Cmd+L works with Claude Code, Gemini Code Assist, Copilot, Cursor, terminal tools, text editors. Learn once, use everywhere.
  • Better precision — Character-level ranges, not just lines. Share exactly what matters.
  • Universal format — GitHub-style links work in PRs, Slack, docs. Not proprietary.
  • AI-agnostic — Your workflow doesn't change when you switch AI tools. Bring your own — if it has a VS Code extension with a focus command, or runs in a terminal, RangeLink can paste into it.

For AI-Assisted Development

Using Claude Code, Gemini Code Assist, Cursor, Copilot, or any other AI tool — in an extension or terminal? RangeLink eliminates the context-sharing friction:

  1. Select code → Generate link (Cmd+R Cmd+L)
  2. Destination handles delivery → Link appears where your AI can see it
  3. AI reads precise context → No manual copy/paste, no lost focus
  4. AI responds with links → Click to jump directly to code (Cmd+Click in terminal or editor)

Compete with built-in AI features by making external AI assistants feel integrated. You get:

  • ⚡ Zero-friction AI context — Destinations auto-send links. No clipboard juggling.
  • 🎯 Choice of AI tool — Claude Code, Gemini Code Assist, Copilot, Cursor, terminal CLI tools, anything. Not locked into one vendor or one interface.
  • 📐 Full control over context — Character-level precision (#L42C10), not just line-level.
  • 🔗 Cross-file context — Generate links from multiple files, paste all in one prompt.
  • 🌐 Universal compatibility — Works across editors (VSCode, Cursor) and in any text-based tool.

Perfect For

  • 🤖 AI assistants — Claude Code (extension or terminal), Gemini Code Assist, Cursor AI, Copilot, plus any custom AI tool via settings — with exact context + clickable navigation
  • 💻 Terminal AI tools — Claude Code CLI, gemini-cli, or any terminal-based AI workflow — links paste at your cursor and the terminal auto-focuses
  • 💬 Code reviews — "The bug is in api/routes.ts#L215C8-L223C45" (click to view)
  • 👥 Team collaboration — Universal format everyone can use and navigate

Quick Start

Installation

  1. Open VSCode or Cursor
  2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for "RangeLink"
  4. Click Install

Basic Usage

  1. Select text in the editor (non-empty selection required)
  2. Press Cmd+R Cmd+L (Mac) or Ctrl+R Ctrl+L (Windows/Linux)
  3. Link copied to clipboard!

Example output:

recipes/baking/chickenpie.ts#L3C14-L15C9

Note: R then L - the letters stand for Range Link.

Features

🎯 Destinations

The killer feature for AI-assisted workflows: Auto-send generated links to your preferred destination.

RangeLink's unified pattern: All destinations share the same seamless workflow—links paste exactly at your insertion point, the destination auto-focuses, and you immediately continue typing. No copy/paste friction, no manual clicking, no context switching. This is what makes RangeLink competitive with integrated AI assistants like Cursor's Cmd+L, but works across any destination and any AI.

Send more than links:

  • Cmd+R Cmd+V — Paste your selection as-is (perfect for quick code snippets)
  • Cmd+R Cmd+F — Paste current file's path (Shift for absolute)

No destination bound? A quick pick menu appears so you can choose and bind in one action.

Pro tip: Power users rebind destinations on the fly. Working with Claude Code? Bind there. Switching to debug in terminal? Rebind with a right-click. Your workflow, your rules.

Terminal

Bind a terminal to RangeLink, and all generated links auto-paste directly there — even if you switch to other terminals for work.

Perfect for terminal-based AI workflows (claude-code CLI): Links paste exactly at your insertion point in the terminal (not appended at the end), and the terminal auto-focuses so you can immediately continue typing your prompt.

How to use:

  1. Open integrated terminal
  2. Bind using either:
    • Command Palette → "Bind to Terminal" → pick from your open terminals
    • Right-click terminal tab or right-click inside terminal → "RangeLink: Bind Here"
    • RangeLink Menu (Cmd+R Cmd+M) → select a terminal from the inline list
  3. Select code → Generate link → Link pastes at insertion point + terminal focuses automatically

Terminal Picker: When binding via Command Palette or RangeLink Menu, a QuickPick shows your eligible terminals. The currently bound terminal is marked "bound" and sorted first, followed by the active terminal marked "active". When a terminal is both bound and active, it shows "bound · active". With many terminals, extras collapse into "More terminals..." (configurable via rangelink.terminalPicker.maxInline) — the bound terminal is always visible, never hidden behind the overflow.

Text Editor

Build AI prompts in any text document before sending to your AI assistant? Bind any text editor as your destination—works with untitled files, markdown, code files, notes, anything text-based.

Perfect for complex prompts: Links paste exactly at your insertion point in the bound editor, and the editor auto-focuses so you can immediately continue typing.

How to use:

  1. Open a scratchpad file: untitled (Cmd+N / Ctrl+N) or any text file
  2. Bind using either:
    • Command Palette → "Bind to Text Editor"
    • Right-click inside editor → "RangeLink: Bind Here"
  3. Select code in another file → Generate links → They paste at insertion point + editor focuses automatically

Workflow:

  • Draft complex prompts - Gather multiple code references in one place (any file type)
  • Review context - See all links together, validate navigation (Cmd+Click to test)
  • Iterate on prompts - Edit, rearrange, add notes around links before sending to AI

Requirements:

  • Writable text files only - Binary files (images, PDFs) and read-only views (git diffs, output panels) are blocked
  • Different source and destination - If you try to paste to the same file you're selecting from, RangeLink copies to clipboard and shows a message (use R-C for intentional clipboard-only links)

When you close the bound file, RangeLink auto-unbinds with a notification. If the bound file is hidden behind other tabs, RangeLink automatically brings it to the foreground during paste.

File Picker : In the destination picker and RangeLink Menu, open text editor files appear as individual items. The active (frontmost) file per tab group is shown inline; if you have more open files, they collapse into "More files..." which opens a secondary picker organized into "Active Files" and per-"Tab Group N" sections. The currently bound file is marked "bound" and sorted to the top.

Pro tip: Split your editor into two panes (side-by-side or vertical) for the smoothest workflow — browse code on one side, build your prompt on the other. No tab switching needed.

AI Assistants (Built-in + Custom)

One keybinding to rule them all. AI assistants have their own ways to share code — different shortcuts, different formats, and only work with their AI. RangeLink unifies it all: one keybinding (Cmd+R Cmd+L), character-level precision (not just lines), and works with any AI assistant.

The precision advantage: Most AI code-sharing tools work at line-level precision. RangeLink goes deeper with character-level ranges (#L3C14-L15C9), letting you highlight exactly the function signature, the problematic condition, or that one sneaky semicolon — not the whole block.

Built-in AI assistants:

  • Claude Code Extension — Anthropic's official extension (works in VSCode and Cursor)
  • Gemini Code Assist — Google's AI coding assistant
  • Cursor AI — Built into Cursor IDE
  • GitHub Copilot Chat — GitHub's AI coding assistant

Bring Your Own AI Assistant : Any VS Code extension that exposes a focus command or a text-insertion command can be integrated as a RangeLink destination via settings. Three delivery tiers are supported — from direct text injection to manual paste — so RangeLink adapts to each extension's capabilities. See Custom AI Assistant Settings for configuration details.

How it works:

  1. Bind your AI assistant: Command Palette → "Bind to..." or R-D picker
  2. Select code → Cmd+R Cmd+L → Link auto-pastes into chat
  3. Review and send

One destination at a time: Bind to Claude Code, Gemini Code Assist, Cursor AI, a custom AI tool, terminal, OR text editor. Quick switching: Run a different "Bind to..." command or use the R-D picker to replace your current binding with confirmation—no need to unbind first.


🖱️ Link Navigation

Click RangeLinks anywhere to jump directly to code — the perfect complement to destinations.

Terminal Navigation

Any RangeLink in your terminal becomes clickable — whether from claude-code responses, your own links you're validating before sending, or references shared by teammates:

  • Cmd+Click (Mac) or Ctrl+Click (Windows/Linux) to navigate
  • Instant file opening with precise caret positioning
  • Works with all formats: single-line, ranges, columns, rectangular selections
  • Smart path resolution: workspace-relative and absolute paths supported

Example: AI suggests checking recipes/baking/chickenpie.ts#L3C14-L15C9 → Click → VSCode opens file at exact selection.

Editor Navigation

RangeLinks in editor files (markdown, text, code, untitled) are also clickable:

  • Hover to see navigation details
  • Cmd+Click to jump to code
  • Perfect for scratchpads - Validate links before sending to claude-code

Plain File Path Navigation

Plain file paths (without #L suffix) are also clickable — anywhere RangeLinks are detected:

  • Cmd+Click (Mac) or Ctrl+Click (Windows/Linux) opens the file directly
  • Supported formats: absolute (/path/to/file.ts), relative (./file.ts, ../file.ts), tilde (~/file.ts), and quoted paths with spaces ("/path/with spaces/file.ts")
  • Validate on click: detection is instant; file existence is only checked when you click

Go to Link

Have a RangeLink but no clickable context? Paste or type it directly:

  • Press Cmd+R Cmd+G (Mac) or Ctrl+R Ctrl+G (Windows/Linux)
  • Supports all link formats: full paths, ranges, columns (e.g., recipes/baking/chickenpie.ts#L3C14-L15C9)
  • Jump instantly to that exact code location

Perfect for: Links from Slack, email, documentation, or AI responses you can't click directly.


⚡ RangeLink Menu

Press Cmd+R Cmd+M (Mac) / Ctrl+R Ctrl+M (Win/Linux) or click the RangeLink item in the status bar to access quick actions:

  • Jump to Bound Destination — Focus your currently bound destination
  • Bind to a destination — When unbound, the menu shows available destinations inline (AI assistants, terminals, text editors) so you can bind directly from the menu
  • Go to Link — Paste or type a RangeLink to go directly to that code location
  • Show Version Info — Display extension version and build details

🔗 Flexible Link Formats

  • Single line: recipes/baking/chickenpie.ts#L42
  • Line ranges: recipes/baking/chickenpie.ts#L10-L25
  • Column precision: recipes/baking/chickenpie.ts#L3C14-L15C9
  • Rectangular selections: recipes/baking/chickenpie.ts##L10C5-L20C10 (double hash)

📦 Portable Links (BYOD)

Share code references with teammates who use different delimiter configurations. Portable links embed metadata so they work everywhere — no coordination needed.

path#L10C5-L20C10~#~L~-~C~

The ~ separator marks embedded delimiters that override recipient's local settings. No coordination needed — links just work.

Learn more: Monorepo docs → BYOD Guide

Commands

Command Palette

Access via Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux), then type "RangeLink".

Command Shortcut (Mac) Shortcut (Win/Linux) Description
Open Menu Cmd+R Cmd+M Ctrl+R Ctrl+M Open the RangeLink menu
Send RangeLink Cmd+R Cmd+L Ctrl+R Ctrl+L Send link to bound destination
Send RangeLink (Absolute) Cmd+R Cmd+Shift+L Ctrl+R Ctrl+Shift+L Send absolute path link to bound destination
Send Portable Link Cmd+R Cmd+P Ctrl+R Ctrl+P Send BYOD portable link to bound destination
Send Portable Link (Absolute) Cmd+R Cmd+Shift+P Ctrl+R Ctrl+Shift+P Send BYOD portable link (absolute path) to bound destination
Copy RangeLink Cmd+R Cmd+C Ctrl+R Ctrl+C Copy link to clipboard (skip destination)
Copy RangeLink (Absolute) Cmd+R Cmd+Shift+C Ctrl+R Ctrl+Shift+C Copy absolute path link to clipboard (skip destination)
Send Selected Text Cmd+R Cmd+V Ctrl+R Ctrl+V Send selected text directly to bound destination
Send Current File Path Cmd+R Cmd+F Ctrl+R Ctrl+F Send active editor's path to bound destination
Send Current File Path (Absolute) Cmd+R Cmd+Shift+F Ctrl+R Ctrl+Shift+F Send active editor's absolute path to bound destination
Bind to Destination Cmd+R Cmd+D Ctrl+R Ctrl+D Open destination picker to select and bind a target
Bind to Claude Code — — Auto-send links to Claude Code chat
Bind to Gemini Code Assist — — Auto-send links to Gemini Code Assist chat
Bind to Cursor AI — — Auto-send links to Cursor AI chat
Bind to GitHub Copilot Chat — — Auto-send links to Copilot Chat
Bind to Terminal — — Auto-send links to integrated terminal for AI workflows
Bind to Text Editor — — Auto-paste links at insertion point in bound text editor
Jump to Bound Destination Cmd+R Cmd+J Ctrl+R Ctrl+J Focus your currently bound destination
Go to Link Cmd+R Cmd+G Ctrl+R Ctrl+G Paste/type a RangeLink to go to that code location
Unbind Cmd+R Cmd+U Ctrl+R Ctrl+U Stop auto-sending links to bound destination
Show Version Info — — Display version and build info

Terminal-Aware Keybindings

When the terminal has focus with text selected, R-V sends the terminal selection to your bound destination. Other R-keybindings (R-L, R-C) gracefully guide you back to R-V instead of silently doing nothing.

Keybinding Shortcut (Mac) Shortcut (Win/Linux) Description
Paste Terminal Selection (R-V) Cmd+R Cmd+V Ctrl+R Ctrl+V Copy terminal selection and send to bound destination

Customizing Shortcuts: Press Cmd+K Cmd+S (Mac) or Ctrl+K Ctrl+S (Win/Linux) to open Keyboard Shortcuts, then search for "RangeLink".

Context Menus

RangeLink integrates directly into VSCode's right-click menus for fast, keyboard-free workflows. Items are positioned near related VSCode commands for discoverability.

Explorer (right-click on files)

Positioned after VSCode's "Copy Path" / "Copy Relative Path":

Menu Item Visibility Action
RangeLink: Send File Path Always Send absolute path to bound destination
RangeLink: Send Relative File Path Always Send relative path to bound destination
RangeLink: Bind Here Files only Open file and bind as destination
RangeLink: Unbind When bound Unbind current destination

Editor Tab (right-click on tabs)

Menu Item Visibility Action
RangeLink: Send File Path Always Send absolute path to bound destination
RangeLink: Send Relative File Path Always Send relative path to bound destination
RangeLink: Bind Here File or untitled Bind this editor as destination
RangeLink: Unbind When bound Unbind current destination

Editor Content (right-click inside editor)

Menu Item Visibility Action
RangeLink: Send RangeLink Has selection Send link to bound destination
RangeLink: Send RangeLink (Absolute) Has selection Send absolute path link to destination
RangeLink: Send Portable Link Has selection Send BYOD portable link to destination
RangeLink: Send Portable Link (Absolute) Has selection Send BYOD portable link (absolute)
RangeLink: Send Selected Text Has selection Send selected text to bound destination
─── separator ───
RangeLink: Send This File's Path Always Send absolute path to bound destination
RangeLink: Send This File's Relative Path Always Send relative path to bound destination
RangeLink: Bind Here File or untitled Bind this editor as destination
RangeLink: Unbind When bound Unbind current destination

Terminal Tab (right-click on tabs)

Menu Item Visibility Action
RangeLink: Bind Here Always Bind this terminal as destination
RangeLink: Unbind When bound Unbind current destination

Terminal Content (right-click inside terminal)

Menu Item Visibility Action
RangeLink: Send Selected Text Text selected, terminal is not the bound destination Copy terminal selection and send to destination (opens picker if unbound)
RangeLink: Bind Here Always Bind this terminal as destination
RangeLink: Unbind When bound Unbind current destination

Configuration

Customize settings in VSCode (Preferences > Settings > search "rangelink").

Custom AI Assistant Settings

Setting Default Description
rangelink.customAiAssistants [] Array of custom AI assistant definitions (see below)

Define custom AI assistants to extend RangeLink beyond the four built-in AI tools. Each entry has two required fields and three optional command arrays:

Field Type Required Description
extensionId string Yes VS Code extension identifier (publisher.name) — used for availability check
extensionName string Yes Display name shown in the destination picker
insertCommands (string \| object)[] No Tier 1: Commands that accept text directly as an argument. Clipboard is never touched.
focusAndPasteCommands string[] No Tier 2: Commands that focus the AI chat input where VS Code paste commands work. RangeLink auto-pastes via clipboard (clipboard preserved).
focusCommands string[] No Tier 3: Commands that focus/reveal the AI panel. RangeLink copies the link to clipboard and shows a "paste now" toast — clipboard is intentionally left with the link so you can Cmd+V / Ctrl+V.

At least one of the three command arrays must be present. RangeLink tries them in tier order (1 → 2 → 3) and uses the first tier whose commands are registered in VS Code. This is resolved once on first use and cached — not checked on every operation.

Example — webview-based assistant (focus only, user pastes manually):

{
  "rangelink.customAiAssistants": [
    {
      "extensionId": "acme.spark-ai",
      "extensionName": "Spark AI",
      "focusCommands": ["sparkAi.chatView.focus"]
    }
  ]
}

Example — assistant with direct insert + focus fallback:

{
  "rangelink.customAiAssistants": [
    {
      "extensionId": "acme.spark-ai",
      "extensionName": "Spark AI",
      "insertCommands": ["sparkAi.insertText"],
      "focusCommands": ["sparkAi.chatView.focus"]
    }
  ]
}

When sparkAi.insertText is registered (extension supports it), RangeLink uses direct insertion — no clipboard involved. If the command isn't available (older extension version), RangeLink falls back to the focus + manual paste flow automatically.

Overriding built-in assistants: You can customize the built-in AI assistants (Claude Code, Gemini Code Assist, Cursor, Copilot) by adding an entry with the same extensionId. RangeLink merges your custom tiers with the built-in's hardcoded commands as a safety-net fallback. If your custom commands aren't registered (typo, extension not updated), the built-in behavior takes over automatically.

{
  "rangelink.customAiAssistants": [
    {
      "extensionId": "github.copilot-chat",
      "extensionName": "Copilot (Custom)",
      "insertCommands": ["myPlugin.sendToCopilot"]
    }
  ]
}

Here insertCommands is tried first (Tier 1). If myPlugin.sendToCopilot isn't registered, RangeLink falls back to Copilot's built-in focus + paste commands.

insertCommands argument format: Plain strings pass the link text as the first positional argument. For extensions that expect a different argument shape, use an object with ${content} interpolation:

"insertCommands": [
  "sparkAi.insertText",
  { "command": "sparkAi.addContext", "args": [{ "text": "${content}", "source": "rangelink" }] }
]

How availability works: A custom assistant appears in the destination picker when either the extension is installed and active (matched by extensionId), or at least one command from any tier is registered as a VS Code command. Both conditions are checked — an extension that registers commands without activating still works.

Finding extension and command IDs: Open the Extensions panel, click on the extension, and find the identifier shown as publisher.name below the title (e.g., github.copilot-chat). To discover command IDs, check the extension's documentation or run Developer: Toggle Developer Tools and use await vscode.commands.getCommands(true) in the console.

Duplicate entries: If two entries use the same extensionId, only the first is used — duplicates are skipped with a warning in the RangeLink output channel.

Run Developer: Reload Window (or restart VS Code) after changing this setting.

Destination Settings — Claude Code

Setting Default Description
rangelink.destinations.claudeCode.coldStartDelayMs 1500 Total duration (ms) RangeLink waits for the Claude Code panel to become ready on first use
rangelink.destinations.claudeCode.coldRefocusIntervalMs 300 Interval (ms) at which RangeLink re-sends the Claude Code focus signal during the cold-start wait

On first use after binding, the Claude Code chat panel needs time to initialize. During the cold-start period, RangeLink periodically re-focuses the panel so it receives keyboard focus once ready. After the first successful paste, subsequent operations use a faster warm-start path. Increase coldStartDelayMs on slower machines; decrease coldRefocusIntervalMs for more aggressive re-focusing. coldStartDelayMs must be greater than coldRefocusIntervalMs — if violated, defaults are used.

Destination Settings — Gemini Code Assist

Setting Default Description
rangelink.destinations.gemini.coldStartDelayMs 2500 Total duration (ms) RangeLink waits for the Gemini panel to become ready on first use
rangelink.destinations.gemini.coldRefocusIntervalMs 300 Interval (ms) at which RangeLink re-sends the Gemini focus signal during the cold-start wait

On first use after binding, Gemini Code Assist's webview panel needs time to initialize. During the cold-start period, RangeLink periodically re-focuses the panel so it receives keyboard focus once ready. After the first successful paste, subsequent operations use a faster warm-start path. Increase coldStartDelayMs on slower machines; decrease coldRefocusIntervalMs for more aggressive re-focusing. coldStartDelayMs must be greater than coldRefocusIntervalMs — if violated, defaults are used.

Clipboard Settings

Setting Default Description
rangelink.clipboard.preserve "always" Save and restore clipboard around transport operations

Available values:

  • "always" (default) — Before each operation that uses the clipboard as transport (R-L, R-V, R-F), your prior clipboard content is saved and restored afterward. Your clipboard is only permanently overwritten by R-C (Copy RangeLink), where the clipboard is the intended output.
  • "never" — Disables preservation. Your clipboard always contains the last RangeLink output, matching the behavior of versions before this setting was introduced.

Smart Padding Settings

Setting Default Description
rangelink.smartPadding.pasteLink "both" Padding around generated RangeLinks (R-L)
rangelink.smartPadding.pasteContent "none" Padding around selected text (R-V)
rangelink.smartPadding.pasteFilePath "both" Padding around file paths (R-F)

Available values: "both" (space before and after), "before" (space before only), "after" (space after only), "none" (no padding).

Most paste commands default to "both" to prevent the pasted text from concatenating with surrounding content. The exception is pasteContent which defaults to "none" — selected text is pasted exactly as-is since it typically represents raw code or prose where extra whitespace would be unwanted.

Feedback & Warning Settings

Setting Default Description
rangelink.warnOnDirtyBuffer true Show warning when a file has unsaved changes (applies to R-L and R-F)
rangelink.navigation.showNavigatedToast true Show info toast after successful navigation (e.g., "Navigated to recipes/baking/chickenpie.ts @ 3:14-314:16")
rangelink.navigation.showClampingWarning true Show warning toast when navigation is clamped to file boundaries

When warnOnDirtyBuffer is enabled and a file has unsaved changes, a dialog appears before proceeding. For R-L (Send RangeLink), the options are "Save & Generate" / "Generate Anyway" — this helps avoid creating links that may point to incorrect positions after the file is saved. For R-F (Send File Path), the options are "Save & Send" / "Send Anyway" — this ensures the AI tool reads the same content the user sees on screen, not stale content from disk.

Set the navigation settings to false for a quieter workflow. Navigation itself is unaffected — only the feedback toasts are suppressed. Error toasts (e.g., "Failed to navigate") always appear regardless of these settings.

Terminal Picker Settings

Setting Default Description
rangelink.terminalPicker.maxInline 5 Maximum terminals shown inline in picker (extras in "More terminals...")

When you have more terminals than this threshold, the destination picker shows a "More terminals..." option instead of listing all terminals individually.

Delimiter Settings

Setting Default Description
rangelink.delimiterHash "#" Separator between path and location
rangelink.delimiterLine "L" Line number prefix
rangelink.delimiterPosition "C" Column/character position prefix
rangelink.delimiterRange "-" Range separator (start-end)

Validation Rules:

  • Delimiters cannot contain digits
  • Delimiters cannot be empty
  • All delimiters must be unique
  • Reserved characters (~, |, /, \, :, ,, @) cannot be used

Invalid configurations will fall back to defaults with a warning in the output channel (Cmd+Shift+U / Ctrl+Shift+U, select "RangeLink"). See DEVELOPMENT.md for details.

What's Next

RangeLink is under active development. See open issues for planned features and enhancement requests.

Requirements

  • VSCode or Cursor version 1.49.0 or higher

Known Issues

If you find a bug, please report it.

When filing a bug report, please include:

  • Extension version: Command Palette → "RangeLink: Show Version Info"
  • IDE: VSCode or Cursor (with version number)
  • Operating system: e.g., macOS 14.0, Windows 11, Ubuntu 22.04
  • Extension logs: Open Output panel (Cmd+Shift+U / Ctrl+Shift+U), select "RangeLink", copy relevant logs. More details →

Links

  • 📦 Extension Source
  • 🐛 Report Issues
  • 📚 Monorepo Documentation

Featured In

The most recent posts are at the top.

  • RangeLink v1.0.0: Perfected AI Workflows + The R-Keybinding Family - DEV Community
  • RangeLink v0.3.0: One Keybinding to Rule Them All - DEV Community
  • I Built a VS Code Extension to Stop the Copy-Paste Madness - DEV Community

About

RangeLink is a monorepo project with:

  • rangelink-vscode-extension - This VSCode extension (you are here)
  • rangelink-core-ts - Pure TypeScript core library (platform-agnostic)
  • More plugins coming - Neovim, Sublime Text, and more

The extension is a thin wrapper around the core library, ensuring consistent behavior across all editor integrations.

Want to Learn More?

Curious about how RangeLink came to be or want to contribute?

  • 📖 Project Origin Story - Why RangeLink exists (spoiler: claude-code changed everything)
  • 🐔 About the Logo - Free-range chickens, precision, and Pi (yes, really)
  • 🏗️ Architecture & Monorepo - How it's built and organized
  • 🤝 Contributing Guide - Help make RangeLink even better
  • 🌐 Project Page on ouimet.info - Maintainer's project page for RangeLink

License

MIT - see LICENSE file for details.


Made with ❤️ for developers who love precision

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft