Skip to main content

vim/neovim/kakoune session handler within tmux

Project description

vmux

vim/neovim/kakoune session handler within tmux

Demo

asciicast

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 call vmux - 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 or kak
  • 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 per tmux session and it also supports one global session next to multiple local sessions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vmux-1.1.dev14.tar.gz (23.7 kB view details)

Uploaded Source

Built Distribution

vmux-1.1.dev14-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

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

Hashes for vmux-1.1.dev14.tar.gz
Algorithm Hash digest
SHA256 ee676c34d51c2b0fc78406932823c0f3aefc1744c54c95683ee3670df5848a90
MD5 f0b7457ee68d3fabf5e0ca7e9d906403
BLAKE2b-256 0975092ec6762a0d5448dd366939bb4e9a5b1c2cc44cf653ce2b6484beda99af

See more details on using hashes here.

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

Hashes for vmux-1.1.dev14-py3-none-any.whl
Algorithm Hash digest
SHA256 8aa74244462bf5593549f7add84929aedbc68266ee0a98bc40ef3b6d6181227c
MD5 791a02e3d3dbe4a1eac0de8ba3055691
BLAKE2b-256 167a9c9d562ef60554f1eea7b83e22063447d986f63738cdfde9f74bcfb24c5e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page