WSL VSCode 系列编辑器通用启动脚本
问题解决:
- ✅ 文件夹打开正常(
editor .) - ✅ vueDevTools 点击组件复用已有窗口(不新开窗口)
- ✅ 适用于 Trae CN、VSCode、CodeBuddy 等所有基于 VSCode 的编辑器
核心原理
| 场景 | 处理方式 |
|---|---|
| 打开文件夹 | 官方启动脚本 → 完美支持 WSL 路径 |
| 打开文件 / 文件跳转 | remote-cli → 完美窗口复用 |
使用方法
1. 创建通用启动脚本
保存为 ~/.local/bin/wsl-code-editor.sh:
bash
#!/usr/bin/env bash
# WSL VSCode 系列编辑器通用启动脚本
# 配置说明:
# WIN_INSTALL_PATH: Windows 端编辑器安装目录
# SCRIPT_NAME: 官方启动脚本名称(通常是 trae、code、codebuddy 等)
# SERVER_FOLDER: ~/ 下的服务器文件夹名(如 .trae-cn-server, .vscode-server)
# ========== 配置区域 ==========
WIN_INSTALL_PATH="/mnt/d/Dev/Trae CN"
SCRIPT_NAME="trae"
SERVER_FOLDER=".trae-cn-server"
# ==============================
# 第一个参数(用于判断是不是文件夹)
FIRST_ARG="$1"
# 如果是一个存在的目录 → 用官方脚本打开(支持 WSL 路径)
if [ -d "$FIRST_ARG" ]; then
exec "$WIN_INSTALL_PATH/bin/$SCRIPT_NAME-cn" "$@"
fi
# 其他情况(打开文件、vueDevTools 跳转等)→ 用 remote-cli(窗口复用)
SERVER_DIR="$HOME/$SERVER_FOLDER"
BIN_DIR="$SERVER_DIR/bin"
REMOTE_CLI=$(find "$BIN_DIR" -path "*/bin/remote-cli/$SCRIPT_NAME-cn" -type f 2>/dev/null | head -1)
if [ -n "$REMOTE_CLI" ] && [ -x "$REMOTE_CLI" ]; then
exec "$REMOTE_CLI" "$@"
else
# fallback 到官方脚本
exec "$WIN_INSTALL_PATH/bin/$SCRIPT_NAME-cn" "$@"
fi
2. 给不同编辑器创建软链接
bash
# Trae CN
chmod +x ~/.local/bin/wsl-code-editor.sh
ln -sf ~/.local/bin/wsl-code-editor.sh ~/.local/bin/trae
ln -sf ~/.local/bin/wsl-code-editor.sh ~/.local/bin/trae-cn
# VSCode(如果需要)
# ln -sf ~/.local/bin/wsl-code-editor.sh ~/.local/bin/code
3. 针对不同编辑器的配置示例
| 编辑器 | WIN_INSTALL_PATH | SCRIPT_NAME | SERVER_FOLDER |
|---|---|---|---|
| Trae CN | /mnt/d/Dev/Trae CN |
trae |
.trae-cn-server |
| VSCode | /mnt/c/Users/xxx/AppData/Local/Programs/Microsoft VS Code |
code |
.vscode-server |
| CodeBuddy | /mnt/d/Dev/CodeBuddy |
codebuddy |
.codebuddy-server |
最佳实践
在编辑器的内部终端 中启动开发服务器(如 npm run dev),这样可以获得 TRAE_CN_IPC_HOOK_CLI / VSCODE_IPC_HOOK_CLI 环境变量,窗口复用效果最佳。
验证
bash
# 测试打开文件夹
trae .
# 测试文件跳转(vueDevTools 会自动调用)
trae /path/to/file.vue:42:15