
A motion plugin for file jumping. Hop to file paths, not words.
https://github.com/user-attachments/assets/87b91299-bcf1-49af-95a4-be09752766ba
The small delay while making mark, is just my typing was delayed to think which action will be attractive to users.
https://github.com/user-attachments/assets/1d9a2055-e67f-4663-9e1d-d21d09817dca

You're in a terminal buffer. A test fails. The error shows src/utils/parser.lua:42:15.
With other plugins? Copy the path, switch windows, open file, go to line, find column.
With warp.nvim? Press one key, type the hint, you're there.
Error: assertion failed
--> src/utils/parser.lua:42:15 [a] <- hint appears here
expected: true
got: false
warp.nvim works on every file-like or link-like path visible in the buffer. That includes:
~/jira-task/, /tmp/, another repo)So you can jump to external files and links without leaving the editor or copying paths.
Examples:
Jira / task notes outside the repo
You use a skill like /jira-task so Claude Code (or similar) writes notes under ~/jira-task/. When the assistant prints paths like ~/jira-task/PROJ-123.md, you stay in your repo workspace but can jump to that file with warp — no need to cd or open another window.
PR / branch URLs after creating a PR
After asking the assistant to open a PR, it may print the PR URL (e.g. https://github.com/owner/repo/pull/42). With warp you can jump to that URL (opens in browser) or to any file path it shows — all from the same buffer.
file.lua:42 and file.lua:42:15 patterns, jumps to exact position[text](target) links including anchor links in .md files (hints shown in orange)S or V to open in split windows| Type | Color | Example |
|---|---|---|
| File path | Blue | src/utils.lua:42:15 |
| URL | Green | https://example.com |
| Markdown link (anchor) | Orange | [Demo](#demo) |
{
"nolleh/warp.nvim",
config = true, -- Default keymap: <leader>w
-- Or customize:
-- config = function()
-- require("warp").setup({
-- default_keymap = "<leader>wf", -- or false to disable
-- })
-- end,
keys = { "<leader>w" }, -- your binding key (trigger lazy loading)
}
use {
"nolleh/warp.nvim",
config = function()
require("warp").setup()
end
}
<leader>w (default) or run :WarpIn visual mode, select a block or range of text and press the same warp key to browse the first path-like target inside the selection. If it resolves to a directory, the floating folder browser opens there. When a selected path spans multiple lines, warp joins the lines and opens the complete path if it exists.
That's it. No configuration needed.
Relative paths are resolved from the current file's directory first, with the working
directory as a fallback. If a path exists in both places, the file-relative match is
used. Unnamed and special buffers use the working directory. Absolute paths and ~/
paths are used directly.
When a detected path points to a directory, warp opens a floating browser at the hint position.
| Key | Action |
|---|---|
j / <C-n> |
Move down |
k / <C-p> |
Move up |
<CR> |
Open file / enter directory |
q / <Esc> |
Close |
Selecting a subdirectory navigates into it in-place. Selecting ../ goes to the parent. The open mode (S=split, V=vsplit) carries over to the file you pick.
Open files in split windows by prefixing the hint with uppercase S or V:
| Input | Action |
|---|---|
a |
Open in current window (edit) |
Sa |
Open in horizontal split |
Va |
Open in vertical split |
Default keymap is <leader>w. You can customize or disable it:
require("warp").setup({
default_keymap = "<leader>wf", -- Custom keymap
-- default_keymap = false, -- Disable default keymap
})
MIT