{"id":13411226,"url":"https://github.com/is0n/fm-nvim","last_synced_at":"2025-03-14T16:34:13.681Z","repository":{"id":37954698,"uuid":"410414110","full_name":"is0n/fm-nvim","owner":"is0n","description":"🗂 Neovim plugin that lets you use your favorite terminal file managers (and fuzzy finders) from within Neovim.","archived":false,"fork":false,"pushed_at":"2024-07-24T07:31:57.000Z","size":1131,"stargazers_count":268,"open_issues_count":11,"forks_count":17,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-07-31T20:45:14.767Z","etag":null,"topics":["fff","file-manager","fm","fzf","fzy","gitui","lazygit","lf","lua","neovim","neovim-plugin","nnn","nvim","ranger","skim","twf","vifm","xplr"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/is0n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"publiccode":null,"codemeta":null}},"created_at":"2021-09-26T00:48:47.000Z","updated_at":"2024-07-17T03:14:03.000Z","dependencies_parsed_at":"2024-01-03T03:29:27.420Z","dependency_job_id":"b5423f69-91ee-4417-ac2b-d853f1751175","html_url":"https://github.com/is0n/fm-nvim","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/is0n%2Ffm-nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/is0n%2Ffm-nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/is0n%2Ffm-nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/is0n%2Ffm-nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/is0n","download_url":"https://codeload.github.com/is0n/fm-nvim/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243610961,"owners_count":20319060,"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":["fff","file-manager","fm","fzf","fzy","gitui","lazygit","lf","lua","neovim","neovim-plugin","nnn","nvim","ranger","skim","twf","vifm","xplr"],"created_at":"2024-07-30T20:01:12.300Z","updated_at":"2025-03-14T16:34:13.361Z","avatar_url":"https://github.com/is0n.png","language":"Lua","readme":"[![GitHub Stars](https://img.shields.io/github/stars/is0n/fm-nvim.svg?style=social\u0026label=Star\u0026maxAge=2592000)](https://github.com/is0n/fm-nvim/stargazers/)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n[![Last Commit](https://img.shields.io/github/last-commit/is0n/fm-nvim)](https://github.com/is0n/fm-nvim/pulse)\n[![GitHub Open Issues](https://img.shields.io/github/issues/is0n/fm-nvim.svg)](https://github.com/is0n/fm-nvim/issues/)\n[![GitHub Closed Issues](https://img.shields.io/github/issues-closed/is0n/fm-nvim.svg)](https://github.com/is0n/fm-nvim/issues?q=is%3Aissue+is%3Aclosed)\n[![GitHub License](https://img.shields.io/github/license/is0n/fm-nvim?logo=GNU)](https://github.com/is0n/fm-nvim/blob/master/LICENSE)\n[![Lua](https://img.shields.io/badge/Lua-2C2D72?logo=lua\u0026logoColor=white)](https://github.com/is0n/fm-nvim/search?l=lua)\n\n# fm-nvim\n\n`fm-nvim` is a Neovim plugin that lets you use your favorite terminal file managers (and fuzzy finders) from within Neovim.\n\n\u003cdetails\u003e\n\u003csummary\u003eSupported File Managers\u003c/summary\u003e\n\n- [Lazygit](https://github.com/jesseduffield/lazygit)\u003csup\u003e1\u003c/sup\u003e\n- [Joshuto](https://github.com/kamiyaa/joshuto)\n- [Ranger](https://github.com/ranger/ranger)\n- [Gitui](https://github.com/extrawurst/gitui)\u003csup\u003e1\u003c/sup\u003e\n- [Broot](https://github.com/Canop/broot)\n- [Xplr](https://github.com/sayanarijit/xplr)\n- [Vifm](https://github.com/vifm/vifm)\n- [Nnn](https://github.com/jarun/nnn)\n- [Fff](https://github.com/dylanaraps/fff)\n- [Twf](https://github.com/wvanlint/twf)\n- [Lf](https://github.com/gokcehan/lf)\n- [Fm](https://github.com/knipferrc/fm)\n\n\u003c/details\u003e\n\n\u003cp\u003e\n\u003cdetails\u003e\n\u003csummary\u003eSupported Fuzzy Finders\u003c/summary\u003e\n\n- [Skim](https://github.com/lotabout/skim)\n- [Fzf](https://github.com/junegunn/fzf)\n- [Fzy](https://github.com/jhawthorn/fzy)\n\n\u003c/details\u003e\n\u003c/p\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eExtra\u003c/summary\u003e\n\n- [Neomutt](https://github.com/neomutt/neomutt)\u003csup\u003e1\u003c/sup\u003e\n- [Taskwarrior-tui](https://github.com/kdheepak/taskwarrior-tui)\u003csup\u003e1\u003c/sup\u003e\n\n\u003c/details\u003e\n\u003c/p\u003e\n\n\u003cp\u003eKeep in mind that support for fuzzy finding is quite limited and using seperate plugins would be more practical.\u003c/p\u003e\n\n\u003cp\u003e1. Partial Support as files cannot be opened.\u003c/p\u003e\n\n## Demo and Screenshots:\n\n![Demo](https://user-images.githubusercontent.com/57725322/142964076-6efd1247-b689-4cf7-bc29-ca1c6746462c.gif)\n\n\u003cp\u003e\n\u003cdetails\u003e\n\u003csummary\u003eScreenshots\u003c/summary\u003e\n\n##### [Fzf](https://github.com/junegunn/fzf)\n\n![Fzf](https://user-images.githubusercontent.com/57725322/142956915-2d9a2c98-3074-4c6f-9dd2-467c4080223b.png)\n\n##### [Fzy](https://github.com/jhawthorn/fzy)\n\n![Fzy](https://user-images.githubusercontent.com/57725322/142956916-bd78371f-6308-4559-ae55-0014d18b16bb.png)\n\n##### [Skim](https://github.com/lotabout/skim)\n\n![Skim](https://user-images.githubusercontent.com/57725322/142956926-0b740bdd-6491-4f9d-b3f3-ecd55b37b1e2.png)\n\n##### [Fm](https://github.com/knipferrc/fm)\n\n![Fm](https://user-images.githubusercontent.com/57725322/142956912-ba49e10b-4642-438b-8f09-537fc6301a60.png)\n\n##### [Lf](https://github.com/gokcehan/lf)\n\n![Lf](https://user-images.githubusercontent.com/57725322/142956921-1034582f-1e71-4006-975a-bc7a5d20d7a1.png)\n\n##### [Twf](https://github.com/wvanlint/twf)\n\n![Twf](https://user-images.githubusercontent.com/57725322/142956928-aacded1a-cd04-4ce8-a81e-cdb40f95f2a5.png)\n\n##### [Fff](https://github.com/dylanaraps/fff)\n\n![Fff](https://user-images.githubusercontent.com/57725322/142956906-2eb5d0f1-4a27-4b50-90f8-442cbe6b0cdb.png)\n\n##### [Nnn](https://github.com/jarun/nnn)\n\n![Nnn](https://user-images.githubusercontent.com/57725322/142956922-8bb8cac0-e0b3-4074-b8c3-f1ee53374abd.png)\n\n##### [Vifm](https://github.com/vifm/vifm)\n\n![Vifm](https://user-images.githubusercontent.com/57725322/142956930-0d428618-2329-490b-a9d4-a06493380713.png)\n\n##### [Xplr](https://github.com/sayanarijit/xplr)\n\n![Xplr](https://user-images.githubusercontent.com/57725322/142956932-7e6467fb-1e37-4033-833a-db239a452236.png)\n\n##### [Broot](https://github.com/Canop/broot)\n\n![Broot](https://user-images.githubusercontent.com/57725322/142956899-83684e52-d5d8-4398-99a4-bacb1645f6e4.png)\n\n##### [Ranger](https://github.com/ranger/ranger)\n\n![Ranger](https://user-images.githubusercontent.com/57725322/142956925-efeb3fe0-e8ca-4d77-8188-ea2d859b5c66.png)\n\n##### [Joshuto](https://github.com/kamiyaa/joshuto)\n\n![Joshuto](https://user-images.githubusercontent.com/57725322/142957102-d9132cda-9b6a-44fe-b7d0-e2965c299928.png)\n\n\u003c/details\u003e\n\u003c/p\u003e\n\n## Installation:\n\n- [packer.nvim](https://github.com/wbthomason/packer.nvim):\n  ```lua\n  use {'is0n/fm-nvim'}\n  ```\n\n## Configuration:\n\nThe following configuration contains the defaults so if you find them satisfactory, there is no need to use the setup function.\n\n```lua\nrequire('fm-nvim').setup{\n\t-- (Vim) Command used to open files\n\tedit_cmd = \"edit\",\n\n\t-- See `Q\u0026A` for more info\n\ton_close = {},\n\ton_open = {},\n\n\t-- UI Options\n\tui = {\n\t\t-- Default UI (can be \"split\" or \"float\")\n\t\tdefault = \"float\",\n\n\t\tfloat = {\n\t\t\t-- Floating window border (see ':h nvim_open_win')\n\t\t\tborder    = \"none\",\n\n\t\t\t-- Highlight group for floating window/border (see ':h winhl')\n\t\t\tfloat_hl  = \"Normal\",\n\t\t\tborder_hl = \"FloatBorder\",\n\n\t\t\t-- Floating Window Transparency (see ':h winblend')\n\t\t\tblend     = 0,\n\n\t\t\t-- Num from 0 - 1 for measurements\n\t\t\theight    = 0.8,\n\t\t\twidth     = 0.8,\n\n\t\t\t-- X and Y Axis of Window\n\t\t\tx         = 0.5,\n\t\t\ty         = 0.5\n\t\t},\n\n\t\tsplit = {\n\t\t\t-- Direction of split\n\t\t\tdirection = \"topleft\",\n\n\t\t\t-- Size of split\n\t\t\tsize      = 24\n\t\t}\n\t},\n\n\t-- Terminal commands used w/ file manager (have to be in your $PATH)\n\tcmds = {\n\t\tlf_cmd      = \"lf\", -- eg: lf_cmd = \"lf -command 'set hidden'\"\n\t\tfm_cmd      = \"fm\",\n\t\tnnn_cmd     = \"nnn\",\n\t\tfff_cmd     = \"fff\",\n\t\ttwf_cmd     = \"twf\",\n\t\tfzf_cmd     = \"fzf\", -- eg: fzf_cmd = \"fzf --preview 'bat --style=numbers --color=always --line-range :500 {}'\"\n\t\tfzy_cmd     = \"find . | fzy\",\n\t\txplr_cmd    = \"xplr\",\n\t\tvifm_cmd    = \"vifm\",\n\t\tskim_cmd    = \"sk\",\n\t\tbroot_cmd   = \"broot\",\n\t\tgitui_cmd   = \"gitui\",\n\t\tranger_cmd  = \"ranger\",\n\t\tjoshuto_cmd = \"joshuto\",\n\t\tlazygit_cmd = \"lazygit\",\n\t\tneomutt_cmd = \"neomutt\",\n        taskwarrior_cmd = \"taskwarrior-tui\"\n\t},\n\n\t-- Mappings used with the plugin\n\tmappings = {\n\t\tvert_split = \"\u003cC-v\u003e\",\n\t\thorz_split = \"\u003cC-h\u003e\",\n\t\ttabedit    = \"\u003cC-t\u003e\",\n\t\tedit       = \"\u003cC-e\u003e\",\n\t\tESC        = \"\u003cESC\u003e\"\n\t},\n\n\t-- Path to broot config\n\tbroot_conf = vim.fn.stdpath(\"data\") .. \"/site/pack/packer/start/fm-nvim/assets/broot_conf.hjson\"\n}\n```\n\n## Usage:\n\nAny of the following commands are fine...\n\n- Commands\n  - `:Neomutt`\n  - `:Lazygit`\n  - `:Joshuto`\n  - `:Ranger`\n  - `:Broot`\n  - `:Gitui`\n  - `:Xplr`\n  - `:Vifm`\n  - `:Skim`\n  - `:Nnn`\n  - `:Fff`\n  - `:Twf`\n  - `:Fzf`\n  - `:Fzy`\n  - `:Lf`\n  - `:Fm`\n  - `:TaskWarriorTUI`\n\nbut you can add a directory path w/ the command (doesn't work with `skim`, `fzy`, or `fzf`).\n\nExample:\n\n```\n:Lf ~/.config/nvim/\n```\n\n## Q\u0026A\n\nQ: What if I want to open files in splits or tabs?\n\nA: Use any of the default mappings (unless you've changed them)...\n\n- `\u003cC-h\u003e` for horizontal split\n- `\u003cC-v\u003e` for vertical split\n- `\u003cC-e\u003e` for normal edit\n- `\u003cC-t\u003e` for tabs\n\nQ: Can I run a function once exiting or entering the plugin?\n\nA: Yes you can! Use the following code as a guide...\n\n```lua\nlocal function yourFunction()\n\t-- Your code goes here\nend\n\nrequire('fm-nvim').setup{\n\t-- Runs yourFunction() upon exiting the floating window (can only be a function)\n\ton_close = { yourFunction },\n\n\t-- Runs yourFunction() upon opening the floating window (can only be a function)\n\ton_open = { yourFunction }\n}\n```\n\nQ: What if I want to map `\u003cESC\u003e` to close the window?\n\nA: You can do this by mapping `\u003cESC\u003e` to whatever closes your file manager (note that this may bring up other issues). This can be done with the following code...\n\n```lua\nrequire('fm-nvim').setup{\n\tmappings = {\n\t\t-- Example for Vifm\n\t\tESC        = \":q\u003cCR\u003e\"\n\t}\n}\n```\n\nor you could map `\u003cESC\u003e` to quit in your file manager...\n\nExample for [Lf](https://github.com/gokcehan/lf):\n\n```\nmap \u003cesc\u003e :quit\n```\n\nQ: Am I able to have image previews?\n\nA: Yes and no. Assuming you are on Linux, it is possible with the help of tools like [Überzug](https://github.com/seebye/ueberzug). If you are on Mac or Windows, it is not possible.\n\nQ: Can I use splits instead of a floating window\n\nA: It's possible by changing the \"default\" option in the \"ui\" table to \"split\"\n\nQ: Why isn't my `Broot` configuration working?\n\nA: In order to support `Broot`, a custom configuration file is used, however, you can change this by modifying the `broot_conf` option to your configuration. Just be sure to include the following in your config file...\n```\n{\n\tverbs: [\n\t\t{\n\t\t\tkey: enter\n\t\t\texecution: \":print_path\"\n\t\t\tapply_to: file\n\t\t}\n\t]\n}\n```\n","funding_links":[],"categories":["File Explorer","Lua"],"sub_categories":["Markdown and LaTeX","Assembly"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fis0n%2Ffm-nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fis0n%2Ffm-nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fis0n%2Ffm-nvim/lists"}