{"id":13896387,"url":"https://github.com/RishabhRD/nvim-finder","last_synced_at":"2025-07-17T12:33:19.181Z","repository":{"id":127054698,"uuid":"317999869","full_name":"RishabhRD/nvim-finder","owner":"RishabhRD","description":"A highly extensible fuzzy finder neovim extension based on popfix fuzzy engine.","archived":false,"fork":false,"pushed_at":"2020-12-25T22:29:42.000Z","size":42,"stargazers_count":17,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-25T02:31:53.519Z","etag":null,"topics":["fuzzy-engines","fuzzy-finder","lua","neovim","neovim-plugin","nvim-finder"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RishabhRD.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-12-02T21:45:50.000Z","updated_at":"2024-10-20T10:47:26.000Z","dependencies_parsed_at":"2023-07-15T00:31:58.076Z","dependency_job_id":null,"html_url":"https://github.com/RishabhRD/nvim-finder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RishabhRD/nvim-finder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RishabhRD%2Fnvim-finder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RishabhRD%2Fnvim-finder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RishabhRD%2Fnvim-finder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RishabhRD%2Fnvim-finder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RishabhRD","download_url":"https://codeload.github.com/RishabhRD/nvim-finder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RishabhRD%2Fnvim-finder/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265606776,"owners_count":23797004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fuzzy-engines","fuzzy-finder","lua","neovim","neovim-plugin","nvim-finder"],"created_at":"2024-08-06T18:02:52.896Z","updated_at":"2025-07-17T12:33:18.868Z","avatar_url":"https://github.com/RishabhRD.png","language":"Lua","funding_links":[],"categories":["Lua"],"sub_categories":[],"readme":"# nvim-finder\nnvim-finder is a fuzzy finder built upon\n[popfix](https://github.com/RishabhRD/popfix) fuzzy engine. This\nrepository is a bundle of commands for fuzzy finding various things in neovim.\n\nPopfix's fuzzy engine abstraction is highly extensible and purely written in\nlua. Infact, it is possible to use different fuzzy engines for different jobs.\nOne of the major goal of popfix's default fuzzy engine is to remain\nresponsive even for big jobs with a good visual performance.\n\n![](https://user-images.githubusercontent.com/26287448/101091071-ab205700-35dd-11eb-8f28-00bcf6ec63c7.gif)\n\n## Installation\n\nInstall it as any other plugin. For example with vim-plug:\n\n- Add this to your init.vim:\n   ```vim\n   Plug 'RishabhRD/popfix'\n   Plug 'RishabhRD/nvim-finder'\n   ```\n- After re-sorurcing init.vim\n   ```vim\n   :PlugInstall\n   ```\n\n## Invoking plugin\n\n### Using vimscript commands\n\nnvim-finder ships a ``Finder`` command. Any nvim-finder function can be invoked using:\n\n```vim\n:Finder command init_text\n```\n\ncommand is the function needed to be invoked (like files, git_files, grep, etc).\nTab-completion would also list all the commands available in nvim-finder.\n\ninit_text is the initial prompt text with which nvim-finder would be launched.\nIf not provided, then nvim-finder would launch with no initial prompt text (the\ndefault behavior).\n\nExample:\n\nThis would launch file searcher (default behavior) :\n\n```vim\n:Finder files\n```\n\nThis would launch file searcher with ``init.vim`` as initital prompt text:\n\n```vim\n:Finder files init.vim\n```\n\n### Using lua\n\n#### With default opts\n\n```vim\nlua require'finder'.command()\n```\n\n#### With custom opts\n\nCustom opts are passed as lua tables.\n\n```vim\nlua require'finder'.command{\u003copts\u003e}\n```\n\nExample:\n\n```vim\nlua require'finder'.files{preview_disabled = true, height = 24}\n```\n\nExample mapping:\n```vim\nnnoremap \u003cleader\u003ep \u003ccmd\u003elua require'finder'.files{}\u003cCR\u003e\n```\n\n\n## Currently supported commands\n\n- **Files**\n\n   Search through all files in directory.\n\n   Call: \n   ``:lua require'finder'.files{}``\n\n- **Git Files**\n\n   Iterate through git ls-files in directory.\n\n   Call: \n   ``:lua require'finder'.git_files{}``\n\n- **Fuzzy Grep**\n\n   Grep through all your files in directory with fuzzy finding.\n\n   Call: \n   ``:lua require'finder'.fuzzy_grep{}``\n\n- **Grep**\n   \n   Grep through all your files in directory with plain search.\n\n   Call: \n   ``:lua require'finder'.grep{}``\n\n   **Why to use when fuzzy grep is there ?**\n\n   Because of performance. In large directory, fuzzy finding all things would\n   take time. This command is not built upon default fuzzy engine of popfix\n   so maybe not as responsive as default command in large directory. However,\n   it would search what you want quite fast.\n\n   If you want to contribute to the fuzzy engine for this command make a PR in\n   popfix repository.\n\n- **Buffers**\n\n   Search through all your open buffers with live buffer preview.\n\n   Call: \n   ``:lua require'finder'.buffers{}``\n\n- **Help Tags**\n\n   Search through all your help tags. Easy help.\n\n   Call:\n  ``:lua require'finder'.help_tags{}``\n\n- **File types**\n\n   Search through the file type and set the filetype for the current buffer.\n\n   Call:\n  ``:lua require'finder'.filetypes{}``\n\n- **Commands**\n\n   Search through all commands currently loaded in neovim and execute them.\n\n   Call:\n  ``:lua require'finder'.commands{}``\n\n- **Command History**\n\n   Search through all commands history and execute them.\n\n   Call:\n  ``:lua require'finder'.command_history{}``\n\n- **File History**\n\n   Search through all file history and just open them right away.\n\n   Call:\n  ``:lua require'finder'.file_history{}``\n\n- **Buffer Lines**\n\n    Search through all current buffer lines.\n\n    Call:\n    ``:lua require'finder'.buffer_lines{}``\n\n- **Man Pages**\n\n    Fuzzy search through all man pages.\n\n    Call:\n    ``:lua require'finder'.man_pages{}``\n\n- **Finder Commands**\n\n    Fuzzy search through all of the commands exported by nvim-finder itself.\n\n    Call:\n    ``:lua require'finder'.finder_commands{}``\n\n## Enabling native sorter\n\npopfix also ships an optional sorter 'native-fzy-sorter' as a separate git\nsubmodule. This sorter is written in C and is very fast in compare to other\nsorters. This gives a huge performance boost.\n\nIf you have enabled popfix's native-fzy-sorter (read popfix's README.md for\nsteps) then you can use this sorter as default sorter for nvim-finder using:\n\n```lua\nvim.g.enable_finder_native_sorter = true\n```\n\n## Custom Opts\n\nThese are custom opts supported by every nvim-finder command:\n\n### cwd [string]\n\nDirectory from which command will be launched. By default vim's current working\ndirectory is used.\n\nExample: ``cwd = '/home/user/.config/nvim'``\n\n### cmd [string]\n\nCommand used for find files in directory\n\nExample: ``cmd = 'find .'``\n\n\n### preview_disabled [boolean]\n\nDecides if preview will be disabled for the command. Doesn't effect when\ncommand doesn't support preview. Default is false.\n\nExample: ``preview_disabled = true``\n\n### height [integer]\n\nHeight of finder window.\n\nExample: ``height = 24``\n\n### width [integer]\n\nWidth of finder window.\n\nExample: ``width = 24``\n\n### mode [string]\n\nRender mode of plugin. nvim-finder supports multiple rendering modes.\n\nSupported rendering modes are:\n- editor (default)\n- split\n- cursor (if preview is disabled)\n\nExample: ``mode = 'split'``\n\n### init_text [string]\n\nInitial text with which plugin would start.\n\nExample: ``init_text = 'somefile.cc'``\n\n### sorter [sorter's instance] [See [popfix](https://github.com/RishabhRD/popfix)]\n\nCustom sorter for command. Sorter changes the way plugin sorts the result\naccording to current prompt text.\nYou can pick some predefined sorter from popfix's builtin sorters or can have\nyou own sorter. To read about sorter see [popfix](https://github.com/RishabhRD/popfix)\n\nBy default fzy native sorter is used.\n\nExample: ``sorter = require'popfix.sorter':new_fzy_soter()``\n\n## Custom Highlighting\n\nnvim-finder exposes some highlight group that highlight different elements\nof fuzzy window.\n\n- **FinderListBorder**\n\nBorder color of nvim-finder's list window\n\n- **FinderPreviewBorder**\n\nBorder color of nvim-finder's preview window\n\n- **FinderPromptBorder**\n\nBorder color of nvim-finder's prompt window\n\n- **FinderListHighlight**\n\nDefines foreground and background color of list.\n\n- **FinderPreviewHighlight**\n\nDefines foreground and background color of preview.\n\n- **FinderPromptHighlight**\n\nDefines foreground and background color of prompt window.\n\n- **FinderListSelection**\n\nDefines the appearance of selected list element.\n\n- **FinderListMatch**\n\nDefines the appearance of list characters that match with current prompt text.\n\n- **FinderPromptCommand**\n\nDefines the appearance of prompt string (default prompt command is \u003e)\n\n- **FinderPreviewLine**\n\nDefines the appearance of highlighted line in preview window.\n\n## Contribute\n\nRaise an issue or create a PR if you feel some important command is missing.\nThis is possible that some commands are missing because they may not be in\nmy workflow. :smiley:\n\nIf you feel there is any bug in fuzzy engine, please raise an issue in\n[popfix issues](https://github.com/RishabhRD/popfix/issues).\n\nIf you feel working of any command is not proper please make an issue here or\ncreate a PR.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRishabhRD%2Fnvim-finder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRishabhRD%2Fnvim-finder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRishabhRD%2Fnvim-finder/lists"}