22个版本

0.1.13 2024年1月16日
0.1.12 2023年11月16日
0.1.11 2023年5月4日
0.1.5 2023年3月7日
0.0.6 2022年11月6日

#5 in #util

Download history 555/week @ 2024-04-16 43/week @ 2024-04-23

每月 71 次下载

MITLGPL-3.0

4.5MB
849

包含 (ELF exe/lib, 14MB) plugin/vmux

vmux logo

Discord Crates.io

用于将vim/neovim用作终端复用器的辅助工具

视频演示

Neovim conf '22 演示 会话切换 CLI + vim内部的特性

Docker演示

docker run -it yazgoo/vmux:master (更多使用信息,基于 Dockerfile)

安装

您需要已安装 rust 和 cargo

使用 post-update hook 安装 vmux crate 插件

使用 vim-plug
Plug 'yazgoo/vmux', {'do': 'cargo install vmux' }
使用 lazy.nvim
{ 'yazgoo/vmux', build = 'cargo install vmux' }
使用 packer.nvim
use { 'yazgoo/vmux', run = 'cargo install vmux' }

将以下内容添加到您的 .zshrc.bashrc(将 <your_editor> 替换为 vim 或 nvim(默认))。
(对于 vim,您需要使用 +clientserver 标志进行编译)

使用 vim-plug
source ~/.config/nvim/plugged/vmux/plugin/setup_vmux.sh <your_editor>
使用 lazy.nvim
source ~/.local/share/nvim/lazy/vmux/plugin/setup_vmux.sh <your_editor>
使用 packer.nvim
source ~/.local/share/nvim/site/pack/packer/start/vmux/plugin/setup_vmux.sh <your_editor>

注意:如果您使用 Fish shell,请考虑使用 bass,并在 config.fish 中添加以下内容

bass source <path-to-setup_vmux.sh> <your_editor>

使用方法

交互式使用

视频演示

vmux newvmux 将以交互模式启动 vmux。您将被提示

  • 创建新会话(通过 New: ...(预命名)或 New(自定义命名)
  • 退出(通过 Detach
  • 打开现有会话

您可以使用 CTRL+g 离开当前会话。(您可以将默认的退出键从 CTRL+g(使用 -e a)更改为 CTRL+a)。

在 vim/neovim 内部使用

视频演示

在 vim 中,vmux 提供了 vim 和终端之间的集成。从 vim 中运行 :help vmux 获取更多信息。这里有一个示例配置 在这里

CLI使用方法

  • vmux new <会话名称> 创建一个新的会话,
  • vmux list 列出正在运行的会话,
  • vmux attach <完整会话名称> 连接到一个正在运行的会话(如 vmux list 所示)
  • 您可以使用 -s 选项来分组会话。

自定义

为了获得最佳体验,您至少应该添加以下描述的 list_sessions_namessession_name 钩子文件。

这两个文件都必须是可执行的(如果它们是脚本,则应该有shebang)。

列出会话名称

您可以通过 ~/.config/vmux/hooks/list_sessions_names 定义一个新会话名称列表。脚本只需要输出每行一个会话名称,请参见此示例

会话设置

您可以通过 ~/.config/vmux/hooks/session_name 定义自定义方式来设置新会话。
脚本以会话名称作为参数,并应打印形式为 key=value 的环境变量。

例如,此脚本 将打印 .envrc 的内容,并将工作目录设置为 ~/dev/$1(通过 PWD 行)。

壁纸

您可以将用作壁纸的图片放在 ~/.config/vmux/wallpapers/ 内。

分离/连接回调

您可以在分离/连接会话时定义回调。例如,要共享(n)vim实例(包括寄存器内容)之间的数据,您可以使用共享数据文件(Shada),在您的 vim 配置中添加

function! VmuxCustomDetachCallback()
  wshada
endfunction

function! VmuxCustomAttachCallback()
  rshada
endfunction

您可以通过以下环境变量获取当前会话的信息

  • VMUX_SESSION_GROUP:会话组名称
  • VMUX_DISPLAY_NAME:当前组内的会话显示名称
  • VMUX_SESSION_NAME:用于唯一标识会话的完整会话名称

依赖项

~26–38MB
~509K SLoC