Skip to content

nolleh/warp.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

warp.nvim

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

Neovim License

Demo

wrap.nvim-demo.2026-01-29.at.9.54.56.PM.mov

The small delay while making mark, is just my typing was delayed to think which action will be attractive to users.

warp.nvim-markdown-demo.2026-02-03.at.10.35.56.PM.mov

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
  • 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

Type Color Example
File path Blue src/utils.lua:42:15
URL Green https://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

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.

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.

Split / Vsplit

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

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

About

πŸš€ Hop to anywhere, not just words. Jump based on labels to file paths, URLs, and Markdown links from any buffer(including terminal buf)

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors