Shell 设置
vibe 需要一个 shell 包装函数,才能在创建或清理 worktree 之后切换目录。请将相应的配置添加到你的 shell 中。
Shell 配置
Section titled “Shell 配置”请将以下内容中的其中一项添加到 ~/.zshrc。不要同时添加两者 —— 否则包装函数会被定义两次。
推荐 —— 包装函数 + Tab 补全(子命令、标志,以及 vibe start / vibe jump 的分支名):
autoload -Uz compinit && compiniteval "$(vibe shell-setup --shell zsh --with-completion)"这两行会同时定义 vibe 包装函数并注册 zsh 补全。compinit 那一行是 zsh 补全系统所必需的 —— 如果你已经在 ~/.zshrc 的其他地方调用了 compinit,请把 eval 那一行放在该调用之后。如果 compinit 未被执行,补全注册会被静默跳过,但 vibe 包装函数仍会被定义。
仅包装函数(无 Tab 补全):
vibe() { eval "$(command vibe "$@")" }添加到 ~/.bashrc:
vibe() { eval "$(command vibe "$@")"; }请将以下内容中的其中一项添加到 ~/.config/fish/config.fish。不要同时添加两者 —— 否则包装函数会被定义两次。
推荐 —— 包装函数 + Tab 补全(子命令、标志,以及 vibe start / vibe jump 的分支名):
vibe shell-setup --shell fish --with-completion | source仅这一行就能同时定义 vibe 包装函数并注册 fish 补全。
仅包装函数(无 Tab 补全):
function vibe eval (command vibe $argv)end添加到 ~/.config/nushell/config.nu:
def --env --wrapped vibe [...args] { let out = (^vibe --eval-dialect nu ...$args) for line in ($out | lines) { if ($line | str starts-with "__VIBE_CD__") { cd ($line | str replace "__VIBE_CD__" "") } else { print $line } }}添加到你的 $PROFILE:
function vibe { $out = & vibe.exe --eval-dialect powershell @args; if ($out) { Invoke-Expression ($out -join "`n") } }使用 mise(自动配置)
Section titled “使用 mise(自动配置)”如果你是通过 mise 安装 vibe 的,可以利用 mise 的 hooks 功能来自动完成 shell 设置。
将以下内容添加到项目的 .mise.toml:
[hooks]enter = 'eval "$(vibe shell-setup)"'为什么需要这样做?
Section titled “为什么需要这样做?”当 vibe 创建 worktree 时,它需要把你当前的工作目录切换到新的 worktree。然而,子进程无法直接改变父进程的目录。
shell 包装函数会捕获 vibe 的输出(其中包含类似 cd /path/to/worktree 的 shell 命令),并在当前 shell 上下文中执行它。
添加 shell 配置之后,重新加载你的 shell 并进行验证:
# 重新加载 shell 或打开一个新终端source ~/.zshrc # 或 ~/.bashrc 等
# 确认 vibe 可以正常工作vibe --help