vx 0.4.1

Universal Development Tool Manager
Documentation
# vx switch - 切换工具版本

临时或永久切换工具的默认版本。

## 语法

```bash
vx switch [OPTIONS] <TOOL@VERSION>
```

## 描述

`vx switch` 命令用于切换工具的默认版本。可以临时切换当前会话的版本,或设置为全局默认版本。

## 选项

- `--global` - 设置为全局默认版本
- `--session` - 仅在当前会话中切换(默认)
- `--project` - 在当前项目中切换
- `--temporary` - 临时切换,退出后恢复
- `-v, --verbose` - 显示详细输出

## 参数

- `TOOL@VERSION` - 要切换到的工具和版本

## 示例

### 临时切换版本
```bash
# 在当前会话中切换到 Node.js 20.10.0
vx switch node@20.10.0

# 临时切换,退出后自动恢复
vx switch node@20.10.0 --temporary
```

### 全局切换
```bash
# 设置 Node.js 20.10.0 为全局默认
vx switch node@20.10.0 --global

# 设置 Python 3.11 为全局默认
vx switch python@3.11 --global
```

### 项目级切换
```bash
# 在当前项目中切换版本
vx switch node@18.17.0 --project

# 这会更新 .vx.toml 文件
```

## 工作流程

1. **验证版本**: 检查指定版本是否已安装
2. **备份当前设置**: 保存当前版本设置
3. **应用切换**: 根据选项应用版本切换
4. **更新配置**: 更新相应的配置文件
5. **验证切换**: 确认切换是否成功

## 切换范围

### 会话级切换(默认)
```bash
vx switch node@20.10.0
# 仅在当前终端会话中生效
```

### 全局切换
```bash
vx switch node@20.10.0 --global
# 影响所有新的终端会话
# 更新 ~/.vx/config/global.toml
```

### 项目级切换
```bash
vx switch node@18.17.0 --project
# 仅在当前项目中生效
# 更新 .vx.toml 文件
```

## 输出示例

```bash
$ vx switch node@20.10.0
切换 node 版本: 18.17.0 → 20.10.0
当前会话中 node 版本已切换到 20.10.0

$ node --version
v20.10.0
```

### 全局切换示例
```bash
$ vx switch node@20.10.0 --global
设置 node 全局默认版本: 18.17.0 → 20.10.0
全局配置已更新: ~/.vx/config/global.toml

所有新的终端会话将使用 node@20.10.0
```

### 项目切换示例
```bash
$ vx switch node@18.17.0 --project
更新项目配置: .vx.toml
设置项目 node 版本: 20.10.0 → 18.17.0

项目配置已更新,运行 'vx sync' 应用更改
```

## 版本优先级

vx 按以下优先级选择工具版本:

1. **临时切换** - 最高优先级
2. **项目配置** - `.vx.toml` 文件
3. **会话切换** - 当前会话设置
4. **全局默认** - 全局配置文件
5. **系统安装** - 系统 PATH 中的版本

## 查看当前版本

```bash
# 查看当前使用的版本
vx which node

# 查看所有工具的当前版本
vx version --all

# 查看版本来源
vx version node --source
```

## 恢复版本

```bash
# 恢复到之前的版本
vx switch node@18.17.0

# 清除会话级切换
vx switch --clear-session

# 恢复全局默认
vx switch node --reset-global
```

## 注意事项

1. **版本必须已安装**: 只能切换到已安装的版本
2. **项目配置**: 项目级切换会修改 `.vx.toml` 文件
3. **会话隔离**: 会话级切换不影响其他终端
4. **优先级**: 了解版本选择的优先级顺序

## 相关命令

- [`vx install`]./install.md - 安装工具版本
- [`vx list`]./list.md - 列出已安装版本
- [`vx version`]./version.md - 查看版本信息
- [`vx which`]./which.md - 查看工具路径