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