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
每月 71 次下载
4.5MB
849 行
包含 (ELF exe/lib, 14MB) plugin/vmux
用于将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 new 或 vmux 将以交互模式启动 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_names 和 session_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

