BetterVSCHarpoon README

A port of ThePrimeagen's Harpoon, brought to VS Code. Mark files, jump between them instantly with dedicated keybindings.
No menus, no fuzzy search, just the files you're actively working on, one keystroke away.
Your marks live in a plain text file you can open and edit directly, not some fancy custom menu (I know you use vim motions).
Two modes to choose from:
- Relative file path mode — marks stay valid as you move around the project (paths relative to the workspace root)
- Whole file mode — pins the file by its full path
Keep the last line of the marks file empty. Without it, the next mark you add won't be written on its own line.
Two scopes to choose from:
- Project/workspace scope — Harpoon list is specific to the current workspace, separate from other projects
- Global scope — a single shared Harpoon list across all projects
Changing the scope (global vs. workspace list) requires a restart/reload of the window to take effect.
Motivation
There are plenty of Harpoon extensions out there already but most are either unmaintained, mark the exact line you were on (not just the file), or simply weren't what I wanted: something simple.
Features
- Add files to your Harpoon list with a single keybinding
- Jump instantly to any of up to 9 marked files via dedicated shortcuts
- Open the Harpoon file directly to view or edit your marks as plain text
- Change the file save mode between relative file path and whole file path
- Change the Harpoon scope between a project/workspace list and a single global one
Extension Settings
| Command |
Description |
Default |
bettervscharpoon.open_harpoon_list |
Open the Harpoon file |
none |
bettervscharpoon.add_to_harpoon_list |
Add the current file to the Harpoon list |
none |
bettervscharpoon.navigate_1 |
Jump to marked file 1 (goes up to navigate_9) |
none |
BetterVSCHarpoon.DisableRelativeFilePath |
Disable relative file path mode and use whole file path instead |
false |
BetterVSCHarpoon.UseGlobalList |
Use a global list instead of a workspace-specific list (legacy behavior). Requires Restart/Reload Window |
false |
None of these commands come with a default keybinding — assign the ones you actually use.
Dependencies
None
Known Issues
- The last line of the marks file must be left empty, otherwise the last entry won't be picked up correctly. I'll fix this properly at some point, but I need the extension working for myself right now, so it stays as is for the time being.
Contributing
Found a bug or have an idea for a feature? Issues and pull requests are welcome on GitHub.
This is a small side project I built mainly for myself, so response times might vary but feedback is always appreciated.