warp.nvim

July 13, 2026 · View on GitHub

A motion plugin for file jumping. Hop to file paths, not words.

Neovim License

Demo

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

Directory Browsing

Why warp.nvim?

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

Works on any path — not just your project

warp.nvim works on every file-like or link-like path visible in the buffer. That includes:

  • Paths outside the current workspace (e.g. ~/jira-task/, /tmp/, another repo)
  • Paths and URLs printed by CLI tools (e.g. test output, build logs, or AI coding assistants)

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.

Features

  • Works everywhere - Regular buffers, terminal buffers, floating windows
  • No terminal integration needed - Unlike kitty hints, works with any terminal emulator
  • Line & column aware - Detects file.lua:42 and file.lua:42:15 patterns, jumps to exact position
  • URL support - Opens URLs in your default browser (hints shown in green)
  • Markdown link support - Follows [text](target) links including anchor links in .md files (hints shown in orange)
  • Directory browsing - When a path points to a folder, opens a floating directory browser you can navigate with standard keys
  • Visual selection browsing - In visual mode, press the warp key on a selected block/region to open the first path or folder found
  • Wrapped path support - Handles file paths broken across lines by terminal width
  • Smart window targeting - Opens files in your editor window, not the terminal
  • Split/Vsplit support - Prefix with S or V to open in split windows

Hint Colors

TypeColorExample
File pathBluesrc/utils.lua:42:15
URLGreenhttps://example.com
Markdown link (anchor)Orange[Demo](#demo)

Installation

lazy.nvim

{
  "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)
}

packer.nvim

use {
  "nolleh/warp.nvim",
  config = function()
    require("warp").setup()
  end
}

Usage

  1. Press <leader>w (default) or run :Warp
  2. Hint labels appear on detected file paths
  3. Type the hint to jump

In 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.

That's it. No configuration needed.

Directory Browsing

When a detected path points to a directory, warp opens a floating browser at the hint position.

KeyAction
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.

Split / Vsplit

Open files in split windows by prefixing the hint with uppercase S or V:

InputAction
aOpen in current window (edit)
SaOpen in horizontal split
VaOpen in vertical split

Keymap Configuration

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
})

License

MIT