vx 0.4.1

Universal Development Tool Manager
Documentation
# vx venv - 虚拟环境管理

管理项目特定的虚拟环境,隔离不同项目的工具版本。

## 语法

```bash
vx venv <subcommand> [options]
```

## 子命令

- `create` - 创建新的虚拟环境
- `list` - 列出所有虚拟环境
- `use` - 激活虚拟环境
- `current` - 显示当前激活的虚拟环境
- `run` - 在虚拟环境中运行命令
- `shell` - 在虚拟环境中启动shell
- `add` - 向虚拟环境添加工具
- `remove-tool` - 从虚拟环境移除工具
- `remove` - 删除虚拟环境

## vx venv create

创建新的虚拟环境。

### 语法
```bash
vx venv create <name> [options]
```

### 选项
- `--tools <tool1@version1,tool2@version2>` - 指定要安装的工具
- `--from-config` - 基于当前项目配置创建
- `--force` - 强制创建,覆盖已存在的环境

### 示例
```bash
# 创建空的虚拟环境
vx venv create myproject

# 创建并指定工具
vx venv create myproject --tools node@18.17.0,uv@latest

# 基于当前项目配置创建
vx venv create myproject --from-config
```

## vx venv list

列出所有虚拟环境。

### 语法
```bash
vx venv list [options]
```

### 选项
- `--verbose` - 显示详细信息
- `--active-only` - 仅显示当前激活的环境

### 示例
```bash
# 列出所有虚拟环境
vx venv list

# 显示详细信息
vx venv list --verbose
```

## vx venv use

激活虚拟环境。

### 语法
```bash
vx venv use <name>
```

### 示例
```bash
# 激活虚拟环境
vx venv use myproject

# 激活后,vx命令会自动使用环境中的工具版本
vx node --version  # 使用虚拟环境中的node版本
```

## vx venv current

显示当前激活的虚拟环境。

### 语法
```bash
vx venv current
```

### 示例
```bash
$ vx venv current
myproject
```

## vx venv run

在指定虚拟环境中运行命令。

### 语法
```bash
vx venv run <name> <command> [args...]
```

### 示例
```bash
# 在虚拟环境中运行命令
vx venv run myproject node --version
vx venv run myproject npm install
vx venv run myproject uv pip install requests
```

## vx venv shell

在虚拟环境中启动交互式shell。

### 语法
```bash
vx venv shell <name>
```

### 示例
```bash
# 在虚拟环境中启动shell
vx venv shell myproject
# 进入子shell,所有工具命令都使用环境中的版本
```

## vx venv add

向虚拟环境添加工具。

### 语法
```bash
vx venv add <name> <tool>[@version]
```

### 示例
```bash
# 向虚拟环境添加工具
vx venv add myproject uv@latest
vx venv add myproject python@3.11
```

## vx venv remove-tool

从虚拟环境移除工具。

### 语法
```bash
vx venv remove-tool <name> <tool>
```

### 示例
```bash
# 从虚拟环境移除工具
vx venv remove-tool myproject uv
```

## vx venv remove

删除虚拟环境。

### 语法
```bash
vx venv remove <name> [options]
```

### 选项
- `--force` - 强制删除,不询问确认

### 示例
```bash
# 删除虚拟环境
vx venv remove myproject

# 强制删除
vx venv remove myproject --force
```

## 虚拟环境工作流

### 创建和使用
```bash
# 1. 创建虚拟环境
vx venv create myproject --tools node@18.17.0,uv@latest

# 2. 激活虚拟环境
vx venv use myproject

# 3. 在环境中工作
node --version  # 使用虚拟环境中的版本
uv --version

# 4. 或者直接在环境中运行命令
vx venv run myproject npm install
```

### 环境管理
```bash
# 查看所有环境
vx venv list

# 查看当前环境
vx venv current

# 向环境添加工具
vx venv add myproject python@3.11

# 移除工具
vx venv remove-tool myproject python
```

## 环境配置

虚拟环境配置存储在:
```
~/.vx/venvs/<name>/config/venv.toml
```

配置格式:
```toml
name = "myproject"
created_at = "2024-01-15T10:30:00Z"
modified_at = "2024-01-15T10:30:00Z"
is_active = false

[tools]
node = "18.17.0"
uv = "latest"
python = "3.11"
```

## 环境隔离

VX 虚拟环境提供以下隔离:

1. **工具版本隔离** - 每个环境使用独立的工具版本
2. **配置隔离** - 环境特定的配置不会影响其他环境
3. **依赖隔离** - 工具依赖在环境间独立管理

## 故障排除

### 环境创建失败
```bash
# 检查权限
ls -la ~/.vx/venvs/

# 清理并重新创建
vx venv remove myproject --force
vx venv create myproject --tools node@18.17.0
```

### 激活失败
```bash
# 检查环境是否存在
vx venv list

# 手动激活
eval "$(vx venv activate myproject)"
```

## 相关命令

- [global]./global.md - 全局工具管理
- [install]./install.md - 安装工具
- [config]./config.md - 配置管理