vim/neovim/kakoune session handler within tmux
Project description
vmux
vim/neovim/kakoune session handler within tmux
Demo
Features
- Each
tmux
session has its own editor session - One global editor session can be started
- Suports gvim, vim, neovim and kakoune
- Seamless integration with
gvim
,vim
,nvim
,kak
through wrapper scripts that directly callvmux
- keep your muscle's memory :-) - Once a session has been started in one editor, e.g.
nvim
, the session will be reused even if another editor is called, e.g.vim
orkak
- A new session is started if the old session doesn't exist anymore
- Automatically select tmux pane running the local or global vim session
Installation
Python3 is required as well as tmux
and vim
, gvim
or nvim
.
Via PyPI
Install vmux
using pip
:
$ pip install vmux
From Source
Clone the repository and install vmux:
git clone https://github.com/jceb/vmux.git
cd vmux
make DESTDIR=~/.local install
# if wrapper scripts are desired, install them as well
make DESTDIR=~/.local all
# add ~/.local/bin to PATH variable
export PATH="${HOME}/.local/bin:${PATH}"
Usage
Start editor session through vmux
or vim.vmux
, nvim.vmux
and gvim.vmux
wrapper scripts:
tmux
vmux MYFILE
# split tmux window
vmux MY_OTHERFILE
Once a session has been started, it doesn't matter anymore which editor has been
used. vmux
will open every file in the existing session even if a wrapper
script of a different editor is used.
Customization
Define default editor:
# export environment variable VMUX_EDITOR, either vim or nvim
export VMUX_EDITOR=nvim
Define path to the real editor executables. This is required if the wrapper
scripts are used that will hide the real editors in $PATH
.
export VMUX_REALEDITOR_VIM=/usr/bin/vim
export VMUX_REALEDITOR_NVIM=/usr/bin/nvim
export VMUX_REALEDITOR_GVIM=/usr/bin/gvim
export VMUX_REALEDITOR_KAK=/usr/bin/kak
Define that a global session should be started. One global and multiple local sessions can exists next to one another:
export VMUX_GLOBAL=1
Define that the tmux pane shall not be selected automatically:
export VMUX_NOT_SELECT_PANE=1
Define socket path for nvim
:
export VMUX_NVIM_SESSION_DIR=~/.cache/nvim_sessions
Turn on debugging:
export VMUX_DEBUG=1
How it works
When vmux
is called, it defines a variable VMUX_SESSION_<ID>
that is unique
to the current tmux
session. The value of the variable is set to <ID>
that
is used as session name for vim.vmux
and nvim.vmux
. Furthermore, the global
session that is started through gvim.vmux
is stored in the environment
variables VMUX_SESSION
and VMUX_GLOBAL_PANE
. The session name is set to
global
.
Known issues
I noticed with neovim that the session socket doesn't always get removed when it ends. This might causes vmux to permanently fail to start a new session. It can be manually resolved by deleting the stalled socket file in neovim's session folder.
Similar projects
- tmux-omnivim creates one global
session while
vmux
creates one session pertmux
session and it also supports one global session next to multiple local sessions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file vmux-1.1.dev14.tar.gz
.
File metadata
- Download URL: vmux-1.1.dev14.tar.gz
- Upload date:
- Size: 23.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.1.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee676c34d51c2b0fc78406932823c0f3aefc1744c54c95683ee3670df5848a90 |
|
MD5 | f0b7457ee68d3fabf5e0ca7e9d906403 |
|
BLAKE2b-256 | 0975092ec6762a0d5448dd366939bb4e9a5b1c2cc44cf653ce2b6484beda99af |
File details
Details for the file vmux-1.1.dev14-py3-none-any.whl
.
File metadata
- Download URL: vmux-1.1.dev14-py3-none-any.whl
- Upload date:
- Size: 19.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.1.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8aa74244462bf5593549f7add84929aedbc68266ee0a98bc40ef3b6d6181227c |
|
MD5 | 791a02e3d3dbe4a1eac0de8ba3055691 |
|
BLAKE2b-256 | 167a9c9d562ef60554f1eea7b83e22063447d986f63738cdfde9f74bcfb24c5e |