Shell 集成
Shell 集成提供自动环境激活和命令补全。
设置 Shell 集成
bash
# 添加到 ~/.bashrc
eval "$(vx shell init bash)"zsh
# 添加到 ~/.zshrc
eval "$(vx shell init zsh)"fish
# 添加到 ~/.config/fish/config.fish
vx shell init fish | sourcepowershell
# 添加到 $PROFILE
Invoke-Expression (& vx shell init powershell | Out-String)Shell 集成提供的功能
1. 自动 PATH 设置
你的 PATH 会被配置为找到 vx 管理的工具:
bash
# 没有 shell 集成
/usr/bin/node # 系统 node
# 有 shell 集成
~/.local/share/vx/envs/default/node # vx 管理的 node2. 基于目录的环境切换
当你 cd 进入包含 vx.toml 的目录时,环境会自动激活:
bash
cd my-project/ # 激活项目环境
cd ~ # 返回默认环境3. 命令补全
vx 命令和选项的 Tab 补全:
bash
vx ins<TAB> # 补全为 "vx install"
vx install no<TAB> # 补全为 "vx install node"Shell 补全
单独生成补全脚本:
bash
vx shell completions bash > ~/.local/share/bash-completion/completions/vxzsh
vx shell completions zsh > ~/.zfunc/_vxfish
vx shell completions fish > ~/.config/fish/completions/vx.fishpowershell
vx shell completions powershell > ~\Documents\PowerShell\Completions\vx.ps1环境指示器
使用 shell 集成,你的提示符可以显示活动环境:
bash
PS1='$([ -n "$VX_ENV" ] && echo "[$VX_ENV] ")'"$PS1"zsh
PROMPT='%F{cyan}${VX_ENV:+[$VX_ENV] }%f'"$PROMPT"fish
function fish_prompt
if set -q VX_ENV
echo -n "[$VX_ENV] "
end
# ... 提示符的其余部分
endpowershell
function prompt {
if ($env:VX_ENV) {
Write-Host "[$env:VX_ENV] " -NoNewline -ForegroundColor Cyan
}
# ... 提示符的其余部分
}手动环境激活
如果你更喜欢手动控制:
bash
# 激活特定环境
eval "$(vx env activate my-env)"
# 停用(恢复默认)
eval "$(vx env activate default)"故障排除
Shell 集成不工作
验证安装:
bashvx shell init bash # 应该输出 shell 脚本检查是否正确加载:
bashsource ~/.bashrc echo $PATH | grep vx # 应该显示 vx 路径重启终端
补全不工作
验证补全脚本存在:
bashls ~/.local/share/bash-completion/completions/vx对于 Zsh,确保调用了
compinit:zshautoload -Uz compinit && compinit
Shell 启动缓慢
如果 shell 启动缓慢:
使用延迟加载:
bash# Bash - 延迟加载 vx vx() { unset -f vx eval "$(command vx shell init bash)" vx "$@" }缓存初始化脚本:
bash# 生成一次 vx shell init bash > ~/.vx-init.sh # 加载缓存版本 source ~/.vx-init.sh
高级配置
禁用自动切换
如果你不想自动切换环境:
bash
export VX_AUTO_SWITCH=false
eval "$(vx shell init bash)"自定义钩子
在环境更改时添加自定义行为:
bash
# Bash
vx_env_changed() {
echo "已切换到环境:$VX_ENV"
# 自定义逻辑
}