{"id":29903291,"url":"https://github.com/imranzero/multiterm.nvim","last_synced_at":"2025-08-01T17:03:00.562Z","repository":{"id":305694936,"uuid":"1023652841","full_name":"imranZERO/multiterm.nvim","owner":"imranZERO","description":"Multiple floating terminal manager for Neovim","archived":false,"fork":false,"pushed_at":"2025-07-29T20:47:31.000Z","size":34,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-29T23:06:33.028Z","etag":null,"topics":["neovim","neovim-plugin","terminal","vim"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imranZERO.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,"zenodo":null}},"created_at":"2025-07-21T13:38:56.000Z","updated_at":"2025-07-29T20:47:34.000Z","dependencies_parsed_at":"2025-07-21T15:27:55.467Z","dependency_job_id":"74ab9878-3b38-46de-b1e5-2231adde67ac","html_url":"https://github.com/imranZERO/multiterm.nvim","commit_stats":null,"previous_names":["imranzero/multiterm.nvim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/imranZERO/multiterm.nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imranZERO%2Fmultiterm.nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imranZERO%2Fmultiterm.nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imranZERO%2Fmultiterm.nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imranZERO%2Fmultiterm.nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imranZERO","download_url":"https://codeload.github.com/imranZERO/multiterm.nvim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imranZERO%2Fmultiterm.nvim/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268265581,"owners_count":24222519,"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","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["neovim","neovim-plugin","terminal","vim"],"created_at":"2025-08-01T17:01:03.640Z","updated_at":"2025-08-01T17:03:00.537Z","avatar_url":"https://github.com/imranZERO.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Multiterm.nvim\n\nToggle and Switch Between Multiple Floating Terminals in Neovim.\n\n## Introduction\n\nSome plugins have already provided the functionality to create a floating terminal window in Neovim or Vim. But they only support one running instance, or they just cannot allow you to put the terminal session into background. And some of them are too complicated to use.\n\nYou might often need to open several terminal sessions in Vim. Let's suppose you need to create 2 terminal sessions, one for running tests and the other one for compiling. It is painful to switch between them as you have to switch between Vim modes and use tab or window switching commands.\n\nWith **Multiterm**, all these pains disappear. You could use one single command `:Multiterm` and mapping `\u003cPlug\u003e(Multiterm)` with **count** to **create**, **hide** and **display** the floating terminal window you want.\n\n## Screenshot\n\nHere's the `gitui` app running on Multiterm inside [Neovide](https://neovide.dev/):\n\n[![Screenshot](https://i.postimg.cc/sXKHTwBB/gitui-in-multiterm.png)](https://postimg.cc/PppMxbQh)\n\n## Prerequisites\n\n**Multiterm.nvim** supports neovim versions `0.10.0` or later. Older versions also might work, no guarantees.\n\n## Installation\n\nIf you use `lazy.nvim` as your plugin manager:\n\n```lua\n{\n    \"imranzero/multiterm.nvim\",\n    event = \"VeryLazy\",\n    opts = {\n        -- Recommended keymaps:\n        keymaps = {\n            toggle = \"\u003cF12\u003e\",\n            list = \"\u003cleader\u003e\u003cF12\u003e\",\n        },\n    \n        -- Add configuration options here if needed\n    },\n}\n```\n\nFor other plugin managers, you can use the `require()` syntax to add keymaps and other configuration options:\n\n```lua\nrequire(\"multiterm\").setup({\n    -- Recommended keymaps:\n    vim.keymap.set({ \"n\", \"v\", \"i\", \"t\" }, \"\u003cF12\u003e\", \"\u003cPlug\u003e(Multiterm)\"),\n    vim.keymap.set(\"n\", \"\u003cleader\u003e\u003cF12\u003e\", \"\u003cPlug\u003e(MultitermList)\"),\n\n    -- Add configuration options here if needed\n})\n```\n\n## Usage\n\nIf you do not have any floating terminal instance, running `:Multiterm [cmd]` will create a floating terminal with tag `1`. It is not suggested to run a non-interactive `cmd` as the terminal session will end and get destroyed as soon as `cmd` finishes if run `:Multiterm` without `!`.\n\nIf your cursor is in a floating terminal window, run `:Multiterm` will close that window and put the terminal session into background. Otherwise the **most recently used** floating terminal instance will be activated.\n\nIf you run `:3Multiterm` and do not have a floating terminal with tag `3` created, a new floating terminal window with tag `3` will be created and become the current active floating window.\n\nIf your tag `3` floating terminal is in the background, run `:3Multiterm` will put the session into foreground. You could then run `:Multiterm` to close the window and put it into background again.\n\n\n## Commands \u0026 Mappings\n\nA single primary command is provided:\n\n```vim\n:[count]Multiterm[!] [cmd]\n```\n\n* `[count]` could be a number between 1 and 9 and is the tag of the floating window that you want to activate. If it is not specified, the current active floating terminal session will be closed, or the tag `1` session will be activated in the condition that there is no active session.\n* `[!]` forces the terminal window not to close when the terminal job exits with a **zero** exit code. If not passed, the window will stay open only if the job exits with a **non-zero** code, allowing you to read the error. In that case, pressing `\u003cEnter\u003e` will close the buffer manually.\n* `[cmd]` is the optional command to run. if not specified, the current `shell` option value will be used.\n\nAdditional commands:\n\n```vim\n:MultitermKill [id]\n```\n\n* Kills the terminal session and removes the buffer with the given tag `[id]`.\n\n```vim\n:MultitermKillCurrent\n```\n\n* Kills and removes the currently active terminal session and buffer.\n\n```vim\n:MultitermList\n```\n\n* Opens a popup list of active terminal instances. Use `\u003cEnter\u003e` to open a selected terminal, and press `d` to delete it directly from the list.\n\nMappings are provided to smooth the operation of toggling floating terminals and are the **SUGGESTED** way to use instead of the command. Using these mappings are just like running `:Multiterm` without any additional argument.\n\n```lua\n-- Map \u003cF12\u003e to toggle the selected terminal window\nvim.keymap.set({ \"n\", \"v\", \"i\", \"t\" }, \"\u003cF12\u003e\", \"\u003cPlug\u003e(Multiterm)\"),\n\n-- Map \u003cleader\u003e\u003cF12\u003e to open the pop-up list of the active terminal windows\nvim.keymap.set(\"n\", \"\u003cleader\u003e\u003cF12\u003e\", \"\u003cPlug\u003e(MultitermList)\"),\n```\n\nThese keymaps can also be set with `opts` table if you use `lazy.nvim` as your plugin manager:\n\n```lua\n    opts = {\n        keymaps = {\n            toggle = \"\u003cF12\u003e\",\n            list = \"\u003cleader\u003e\u003cF12\u003e\",\n        },\n    },\n```\n\nNow you could press `\u003cF12\u003e` to toggle the tag `1` floating terminal instance or close the current active floating terminal window that your cursor is in. And press `3\u003cF12\u003e` to activate the tag `3` instance, etc.\n\nThe `\u003cPlug\u003e(MultitermList)` keymap provides a way to see all opened multiterm windows conveniently. It opens a popup window with a list of all the active multiterm windows where you can select and open the one you need. When selecting an entry in this list, you can press `d` to kill and remove it.\n\n**NOTE** in terminal mode it is impossible to press a number as the tag, but you can still use `\u003cF12\u003e` to close the current terminal window which your cursor is in without specifying its tag.\n\nWhen a terminal buffer is open, a **tabline** will be shown in the top-right of the floating window, indicating the currently active terminal. You can switch between terminals with:\n\n* `\u003cC-1\u003e` through `\u003cC-9\u003e` – Directly switch to a terminal with the matching tag\n* `\u003cC-h\u003e` / `\u003cC-l\u003e` – Cycle through terminals (left/right)\n* `\u003cC-Left\u003e` / `\u003cC-Right\u003e` – Also supported for cycling between instances\n\n## Configuration\n\n```lua\n-- Default options, do not put this in your configuration file\n\nrequire(\"multiterm\").setup({\n    height = 0.8,\n    width = 0.8,\n    border = 'rounded',\n    term_hl = 'Normal',\n    border_hl = 'FloatBorder',\n    show_term_tag = true,\n    show_backdrop = true,\n    backdrop_bg = 'Black',\n    backdrop_transparency = 60,\n    fullscreen = false,\n    show_tab = true,\n    tabline_hl_active = \"PmenuSel\", \n    tabline_hl_inactive = \"Pmenu\", \n    term_keys = {\n        next = { \"\u003cC-Right\u003e\", \"\u003cC-l\u003e\" },\n        prev = { \"\u003cC-Left\u003e\", \"\u003cC-h\u003e\" },\n        use_ctrl = true,\n    },\n)}\n```\n\nRefer to the doc file for a more detailed explanation.\n\n## Thanks\n\nThis plugin is based on `chengzeyi/multiterm.vim`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimranzero%2Fmultiterm.nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimranzero%2Fmultiterm.nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimranzero%2Fmultiterm.nvim/lists"}