{"id":13897383,"url":"https://github.com/jceb/vmux","last_synced_at":"2025-04-17T12:42:38.246Z","repository":{"id":62587708,"uuid":"59541612","full_name":"jceb/vmux","owner":"jceb","description":"vim/neovim session handler within tmux","archived":false,"fork":false,"pushed_at":"2023-01-18T10:06:21.000Z","size":76,"stargazers_count":87,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-22T21:02:22.265Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/jceb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-24T04:59:34.000Z","updated_at":"2025-02-10T15:12:03.000Z","dependencies_parsed_at":"2023-02-10T14:15:45.828Z","dependency_job_id":null,"html_url":"https://github.com/jceb/vmux","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jceb%2Fvmux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jceb%2Fvmux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jceb%2Fvmux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jceb%2Fvmux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jceb","download_url":"https://codeload.github.com/jceb/vmux/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248694244,"owners_count":21146945,"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":[],"created_at":"2024-08-06T18:03:33.419Z","updated_at":"2025-04-17T12:42:38.225Z","avatar_url":"https://github.com/jceb.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# [vmux](http://github.com/jceb/vmux)\n\nvim/neovim/kakoune session handler within tmux\n\n# Demo\n\n[![asciicast](https://asciinema.org/a/46634.png)](https://asciinema.org/a/46634)\n\n# Features\n\n- Each `tmux` session has its own editor session\n- One global editor session can be started\n- Suports [gvim, vim](http://vim.org/), [neovim](http://neovim.org/) and\n  [kakoune](http://kakoune.org/)\n- Seamless integration with `gvim`, `vim`, `nvim`, `kak` through wrapper scripts\n  that directly call `vmux` - keep your muscle's memory :-)\n- Once a session has been started in one editor, e.g. `nvim`, the session will\n  be reused even if another editor is called, e.g. `vim` or `kak`\n- A new session is started if the old session doesn't exist anymore\n- Automatically select tmux pane running the local or global vim session\n\n# Installation\n\nPython3 is required as well as `tmux` and `vim`, `gvim` or `nvim`.\n\n## Via PyPI\n\nInstall `vmux` using `pip`:\n\n```bash\npip install vmux\n```\n\n## From Source\n\nClone the repository and install vmux:\n\n```bash\ngit clone https://github.com/jceb/vmux.git\ncd vmux\nmake DESTDIR=~/.local install\n\n# if wrapper scripts are desired, install them as well\nmake DESTDIR=~/.local all\n\n# add ~/.local/bin to PATH variable\nexport PATH=\"${HOME}/.local/bin:${PATH}\"\n```\n\n# Usage\n\nStart editor session through `vmux` or `vim.vmux`, `nvim.vmux` and `gvim.vmux`\nwrapper scripts:\n\n```bash\ntmux\nvmux MYFILE\n# split tmux window\nvmux MY_OTHERFILE\n```\n\nOnce a session has been started, it doesn't matter anymore which editor has been\nused. `vmux` will open every file in the existing session even if a wrapper\nscript of a different editor is used.\n\n# Customization\n\nDefine default editor:\n\n```bash\n# export environment variable VMUX_EDITOR, either vim or nvim\nexport VMUX_EDITOR=nvim\n```\n\nDefine path to the real editor executables. This is required if the wrapper\nscripts are used that will hide the real editors in `$PATH`.\n\n```bash\nexport VMUX_REALEDITOR_GNVIM=/usr/bin/gnvim\nexport VMUX_REALEDITOR_GVIM=/usr/bin/gvim\nexport VMUX_REALEDITOR_KAK=/usr/bin/kak\nexport VMUX_REALEDITOR_NVIM=/usr/bin/nvim\nexport VMUX_REALEDITOR_NVIM_QT=/usr/bin/nvim-qt\nexport VMUX_REALEDITOR_NVR=/usr/bin/nvr\nexport VMUX_REALEDITOR_VIM=/usr/bin/vim\n```\n\nDefine that a global session should be started. One global and multiple local\nsessions can exists next to one another:\n\n```bash\nexport VMUX_GLOBAL=1\n```\n\nDefine that the tmux pane shall not be selected automatically:\n\n```bash\nexport VMUX_NOT_SELECT_PANE=1\n```\n\nDefine socket path for `nvim`:\n\n```bash\nexport VMUX_NVIM_SESSION_DIR=~/.cache/nvim_sessions\n```\n\nTurn on debugging:\n\n```bash\nexport VMUX_DEBUG=1\n```\n\n# How it works\n\nWhen `vmux` is called, it defines a variable `VMUX_SESSION_\u003cID\u003e` that is unique\nto the current `tmux` session. The value of the variable is set to `\u003cID\u003e` that\nis used as session name for `vim.vmux` and `nvim.vmux`. Furthermore, the global\nsession that is started through `gvim.vmux` is stored in the environment\nvariables `VMUX_SESSION` and `VMUX_GLOBAL_PANE`. The session name is set to\n`global`.\n\n# Known issues\n\nI noticed with neovim that the session socket doesn't always get removed when it\nends. This might causes vmux to permanently fail to start a new session. It can\nbe manually resolved by deleting the stalled socket file in neovim's session\nfolder.\n\n# Similar projects\n\n- [tmux-omnivim](https://github.com/andy-lang/tmux-omnivim) creates one global\n  session while `vmux` creates one session per `tmux` session and it also\n  supports one global session next to multiple local sessions.\n- creates one global\n- [neovim-remote](https://github.com/mhinz/neovim-remote)\n  [tmux-nvr](https://github.com/carlocab/tmux-nvr) creates one global session\n  while `vmux` creates one session per `tmux` session and it also supports one\n  global session next to multiple local sessions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjceb%2Fvmux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjceb%2Fvmux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjceb%2Fvmux/lists"}