[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-77821":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":34,"discoverSource":35},77821,"wayfinder.nvim","error311\u002Fwayfinder.nvim","error311","Guided code exploration for Neovim with definitions, refs, callers, tests, git, and persistent Trails from the current symbol","",null,"Lua",116,3,1,0,2,5,6,1.81,"MIT License",false,"main",true,[25,26,27,28,29,30],"code-navigation","developer-tools","lsp","lua","neovim","neovim-plugin","2026-06-12 02:03:44","# wayfinder.nvim\n\n`wayfinder.nvim` is a guided code exploration picker for the current symbol or file.\n\nIt is not a general search tool, and it does not try to replace Telescope or grep.\nIt replaces the manual loop of jump, grep, back, open, back, and \"where was that test again?\"\n\nWayfinder opens a centered 3-pane picker and gathers connected code:\n\n- definitions\n- references\n- callers\n- likely tests\n- recent commits\n\nPin useful stops into Trail while you explore, then save that Trail per project and resume it later.\n\n![wayfinder motion](docs\u002Fmedia\u002Fwayfinder.gif)\n\n![wayfinder overview](docs\u002Fscreenshots\u002Foverview.png)\n\n![wayfinder refs](docs\u002Fscreenshots\u002Frefs.png)\n\n![wayfinder trail](docs\u002Fscreenshots\u002Ftrail.png)\n\n## Features\n\n- Centered 3-pane floating layout\n- Facet rail, dense result rows, badges, and grouped headers\n- Syntax-highlighted preview with project-relative context\n- `e` pivots from the selected code row without leaving the picker\n- `b` \u002F `f` move backward and forward through explore history\n- Top bar shows the selected row's explore target before pivoting\n- Trail pins selected rows, current targets, and explore paths\n- Persistent named Trails per project\n- Toggleable bottom key hints\n- Progressive, cancelable LSP, test, text, and git sources\n- Compact loading, empty, and unavailable states\n- Local filter with negation and quoted phrases\n\n## Requirements\n\n- Neovim `0.10+`\n- `ripgrep` for Text Matches\n- `git` for the Git facet\n\n## Installation\n\nWith `lazy.nvim`:\n\n```lua\n{\n  \"error311\u002Fwayfinder.nvim\",\n  opts = {},\n}\n```\n\n## Quick Start\n\n```lua\nrequire(\"wayfinder\").setup({})\n\nvim.keymap.set(\"n\", \"\u003Cleader>wf\", \"\u003CPlug>(WayfinderOpen)\", {\n  desc = \"Wayfinder\",\n})\n```\n\nOpen Wayfinder on a symbol to see definitions, references, callers, likely tests, and recent commits.\nIf there is no symbol under the cursor, Wayfinder falls back to the current file.\n\n## Typical Flow\n\n1. Open Wayfinder on the current symbol or file.\n2. Move across `Calls`, `Refs`, `Tests`, `Git`, and `Trail`.\n3. Use preview to confirm the right match before jumping.\n4. Press `e` to explore from the selected code result.\n5. Use `b` \u002F `f` to move through explore history.\n6. Use `a` to add the current target to Trail, or `A` to add the whole explore path.\n7. Pin selected rows with `p`.\n8. Save, load, or resume a Trail if you want to keep that path.\n\n## Default Keys\n\n| Key | Action |\n| --- | --- |\n| `j` \u002F `k` | Move selection |\n| `gg` \u002F `G` | First \u002F last result |\n| `\u003CC-u>` \u002F `\u003CC-d>` | Move by half a page |\n| `h` \u002F `l` | Previous \u002F next facet |\n| `\u003CTab>` \u002F `\u003CS-Tab>` | Next \u002F previous facet |\n| `\u003CCR>` | Jump |\n| `e` | Explore selected code result |\n| `b` \u002F `f` | Back \u002F forward through explore history |\n| `p` | Pin selected row into Trail |\n| `a` | Add current Wayfinder target to Trail |\n| `A` | Add current explore path to Trail |\n| `P` | Open Trail |\n| `S` | Open Trail menu |\n| `[` \u002F `]` | Previous \u002F next saved Trail |\n| `s` \u002F `v` \u002F `t` | Open in split \u002F vsplit \u002F tab |\n| `\u002F` \u002F `\u003CC-l>` | Filter \u002F clear filter |\n| `D` | Toggle details |\n| `?` | Toggle bottom key hints |\n| `x` | Export current facet to quickfix |\n| `dd` \u002F `da` | Remove Trail item \u002F clear Trail |\n| `r` | Refresh |\n| `q` | Close |\n\n## Trail\n\nTrail is the breadcrumb list you build while exploring.\n\n- `p` pins the selected row.\n- `a` pins the current Wayfinder target.\n- `A` pins the current explore path.\n- Trail groups explicit explore targets separately from selected row pins.\n- `S` opens save, resume, load, rename, and delete actions.\n- Saved Trails are project-scoped and stored under Neovim state, not in your repo.\n\nNormal `:Wayfinder` opens do not auto-load saved Trails. Use `:WayfinderTrailResume` or the Trail menu when you want to restore the last active saved Trail.\n\n## Explore\n\n`e` pivots Wayfinder from the selected code row. The top bar shows what will be explored, such as `Explore findUser`, before the pivot happens.\n\n`D` details include the exact explore target location when there is room. Git rows are history rows, so they explain why they cannot be explored instead of pivoting.\n\n## Configuration\n\nDefault setup is enough for normal repos. A small layout tweak looks like this:\n\n```lua\nrequire(\"wayfinder\").setup({\n  layout = {\n    width = 0.88,\n    height = 0.72,\n    show_hints = true,\n  },\n})\n```\n\nFor large repos or monorepos, narrow broad sources to the nearest package\u002Fmodule:\n\n```lua\nrequire(\"wayfinder\").setup({\n  performance = \"fast\",\n  scope = {\n    mode = \"package\",\n    package_markers = {\n      \"package.json\",\n      \"tsconfig.json\",\n      \"pyproject.toml\",\n      \"go.mod\",\n      \"Cargo.toml\",\n      \".git\",\n    },\n  },\n})\n```\n\nPerformance presets:\n\n- `fast`: tighter limits and shorter timeouts\n- `balanced`: default behavior\n- `full`: broader limits and looser timeouts\n\n## Commands\n\nCore commands:\n\n- `:Wayfinder`\n- `:WayfinderExportQuickfix`\n- `:WayfinderExportTrailQuickfix`\n\nTrail commands:\n\n- `:WayfinderTrailNext`\n- `:WayfinderTrailPrev`\n- `:WayfinderTrailOpen`\n- `:WayfinderTrailShow`\n- `:WayfinderTrailSave`\n- `:WayfinderTrailSaveAs`\n- `:WayfinderTrailLoad`\n- `:WayfinderTrailResume`\n- `:WayfinderTrailDelete`\n- `:WayfinderTrailRename`\n\nRecommended external mappings:\n\n```lua\nvim.keymap.set(\"n\", \"\u003Cleader>wf\", \"\u003CPlug>(WayfinderOpen)\", { desc = \"Wayfinder\" })\nvim.keymap.set(\"n\", \"\u003Cleader>wtn\", \"\u003CPlug>(WayfinderTrailNext)\", { desc = \"Wayfinder Trail Next\" })\nvim.keymap.set(\"n\", \"\u003Cleader>wtp\", \"\u003CPlug>(WayfinderTrailPrev)\", { desc = \"Wayfinder Trail Prev\" })\nvim.keymap.set(\"n\", \"\u003Cleader>wto\", \"\u003CPlug>(WayfinderTrailOpen)\", { desc = \"Wayfinder Trail Open\" })\nvim.keymap.set(\"n\", \"\u003Cleader>wts\", \"\u003CPlug>(WayfinderTrailShow)\", { desc = \"Wayfinder Trail Show\" })\n```\n\n## Help\n\nFor full behavior and configuration details:\n\n```vim\n:help wayfinder\n:checkhealth wayfinder\n```\n\n## Demo Fixture\n\nThe repo includes a small fixture app plus a tiny demo LSP so screenshots and gifs are reproducible.\n\n```sh\nnvim -u demo\u002Fminimal_init.lua demo\u002Ffixture-app\u002Fsrc\u002Fuser_service.ts\n```\n\nMove the cursor onto `createUser`, then run `:Wayfinder`.\n\nMore demo notes are in [demo\u002FREADME.md](demo\u002FREADME.md).\n\n## License\n\nMIT\n","`wayfinder.nvim` 是一个为 Neovim 设计的代码探索工具，帮助开发者高效地浏览当前符号或文件的相关定义、引用、调用者、测试及最近提交记录。其核心功能包括三窗格布局的浮动界面、丰富的代码导航选项（如定义、引用和调用者）、以及项目内相对路径的语法高亮预览。用户可以在探索过程中通过“Trail”功能保存有用的代码路径，并在后续开发中恢复使用。此插件特别适合于需要频繁跳转至不同代码位置进行阅读或修改的场景，能够显著提高开发效率。要求环境为 Neovim 0.10+ 版本，并依赖 ripgrep 和 git 提供额外功能支持。","2026-06-11 03:56:07","CREATED_QUERY"]