Selection Path Copier
A Visual Studio Code extension that copies file paths with line numbers in various formats (GitHub, Editor, Parentheses). Works with both selected text and cursor position.
Features
- Copy Path with Line Numbers: Copy file path with line numbers for selected text or cursor position
- Smart Cursor Handling: When no text is selected:
- Copies path with cursor line number
- On empty lines, copies just the file path without line number
- Copy Path with Code: Copy both the file path reference and the code content
- Copy GitHub Permalink: Generate permanent GitHub links using commit hash for stable references
- Markdown Code Blocks: Option to wrap code in markdown code blocks with syntax highlighting
- Relative or Absolute Paths: Configure whether to use relative paths (from workspace root) or absolute paths
- Multi-line Selection Support: Automatically formats single line or range references
- Multiple Format Options: GitHub, Editor, and Parentheses formats
Usage
With Text Selection
- Select code in the editor
- Use one of the following methods:
Without Text Selection (Cursor Position)
- Place your cursor on any line
- Use the same shortcuts/commands to copy the current line reference
- On empty lines, only the file path will be copied
Keyboard Shortcuts
- Copy Path:
Cmd+Alt+C
(Mac) / Ctrl+Alt+C
(Windows/Linux)
- Copy Path with Code:
Cmd+Alt+Shift+C
(Mac) / Ctrl+Alt+Shift+C
(Windows/Linux)
- Copy GitHub Permalink:
Cmd+Alt+P
(Mac) / Ctrl+Alt+P
(Windows/Linux)
- Copy GitHub Permalink with Code:
Cmd+Alt+Shift+P
(Mac) / Ctrl+Alt+Shift+P
(Windows/Linux)
Command Palette
- Press
Cmd+Shift+P
(Mac) or Ctrl+Shift+P
(Windows/Linux)
- Search for:
Selection Path Copier: Copy Path
- Copies path with line numbers
Selection Path Copier: Copy Path with Code
- Copies path and selected code
Selection Path Copier: Copy GitHub Permalink
- Copies GitHub permalink with commit hash
Selection Path Copier: Copy GitHub Permalink with Code
- Copies GitHub permalink with commit hash and code
- Right-click on selected text
- Choose from the copy options in the context menu
Example Output
GitHub Format (default):
src/components/Header.tsx#L25-30
Editor Format:
src/components/Header.tsx:25-30
Parentheses Format:
src/components/Header.tsx(25-30)
GitHub Permalink (commit hash - default):
https://github.com/yoshi47/my-project/blob/e3873f70720c00e07f9b202a97367ab460f8051f/src/components/Header.tsx#L25-L30
GitHub Permalink (branch name):
https://github.com/yoshi47/my-project/blob/main/src/components/Header.tsx#L25-L30
GitHub Permalink with Code:
https://github.com/yoshi47/my-project/blob/e3873f70720c00e07f9b202a97367ab460f8051f/src/components/Header.tsx#L25-L30
export const Header: React.FC = () => {
return (
<header className="main-header">
<h1>Welcome</h1>
</header>
);
}
Copy Path with Code (Plain format):
src/components/Header.tsx#L25-30
export const Header: React.FC = () => {
return (
<header className="main-header">
<h1>Welcome</h1>
</header>
);
}
Copy Path with Code (Markdown format):
src/components/Header.tsx#L25-30
```typescript
export const Header: React.FC = () => {
return (
<header className="main-header">
<h1>Welcome</h1>
</header>
);
}
```
Extension Settings
This extension contributes the following settings:
selection-path-copier.pathType
: Choose between path types
"relative"
(default): Use relative paths from workspace root
"absolute"
: Use absolute file paths
selection-path-copier.includeBlankLine
: Control blank line when copying with code
true
(default): Include a blank line between path and code
false
: No blank line between path and code
selection-path-copier.lineNumberFormat
: Choose the line number reference format
"github"
(default): GitHub format (e.g., file.ts#L10
or file.ts#L10-20
)
"editor"
: Editor format (e.g., file.ts:10
or file.ts:10-20
)
"parentheses"
: Parentheses format (e.g., file.ts(10)
or file.ts(10-20)
)
selection-path-copier.codeFormat
: Choose the code format when copying with code
"plain"
(default): Plain text format
"markdown"
: Markdown code block with syntax highlighting
selection-path-copier.githubPermalinkType
: Choose permalink reference type
"commit"
(default): Use commit hash for permanent reference (e.g., /blob/abc123...
)
"branch"
: Use default branch name (e.g., /blob/main
or /blob/master
)