VsCode 一些设置

vscode 应用路径设置

迁移下vscode的userdata数据与extension数据

旧方法(D)

migrate_vscode.ps1
# ==============================
# VS Code 缓存迁移 + Java/LaTeX 输出路径 + 快捷方式修改
# ==============================

# 1. 关闭 VS Code
Write-Host "正在关闭 VS Code..."
taskkill /F /IM Code.exe 2>$null

# 2. 设定新目录(可修改)
$VSCODE_DATA_DIR  = "D:\Application\Microsoft VS Code\VSCodeUserData"
$VSCODE_EXT_DIR   = "D:\Application\Microsoft VS Code\VSCodeExtensions"

# 3. 创建目录(如果不存在)
New-Item -ItemType Directory -Force -Path $VSCODE_DATA_DIR  | Out-Null
New-Item -ItemType Directory -Force -Path $VSCODE_EXT_DIR   | Out-Null

# 4. 迁移 VS Code 用户数据(用 Remove-Item 代替 rmdir /S /Q)
$oldDataDir = "$env:APPDATA\Code"
if (Test-Path $oldDataDir) {
    Write-Host "迁移 VS Code 用户数据到 $VSCODE_DATA_DIR"
    robocopy $oldDataDir $VSCODE_DATA_DIR /MIR
    Remove-Item -Path $oldDataDir -Recurse -Force
    cmd /c mklink /J $oldDataDir $VSCODE_DATA_DIR
}

# 5. 迁移 VS Code 扩展目录
$oldExtDir = "$env:USERPROFILE\.vscode\extensions"
if (Test-Path $oldExtDir) {
    Write-Host "迁移 VS Code 扩展到 $VSCODE_EXT_DIR"
    robocopy $oldExtDir $VSCODE_EXT_DIR /MIR
    Remove-Item -Path $oldExtDir -Recurse -Force
    cmd /c mklink /J $oldExtDir $VSCODE_EXT_DIR
}


# 6. 修改 VS Code 快捷方式
Write-Host "正在修改 VS Code 快捷方式..."
$shortcutPaths = @(
    "$env:USERPROFILE\Desktop\Visual Studio Code.lnk",
    "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Visual Studio Code.lnk"
)

$codeExePath = "C:\Users\$env:USERNAME\AppData\Local\Programs\Microsoft VS Code\Code.exe"
$shortcutArgs = "--user-data-dir `"$VSCODE_DATA_DIR`" --extensions-dir `"$VSCODE_EXT_DIR`""

$wsh = New-Object -ComObject WScript.Shell

foreach ($scPath in $shortcutPaths) {
    if (Test-Path $scPath) {
        $shortcut = $wsh.CreateShortcut($scPath)
        $shortcut.TargetPath = $codeExePath
        $shortcut.Arguments = $shortcutArgs
        $shortcut.Save()
        Write-Host "已修改快捷方式: $scPath"
    }
}

Write-Host "✅ 所有配置完成:"
Write-Host "  - VS Code 用户数据: $VSCODE_DATA_DIR"
Write-Host "  - VS Code 插件: $VSCODE_EXT_DIR"
Write-Host "以后直接双击 VS Code 图标即可用 D 盘运行"

中间的4 5需要管理员权限,可复制出来单独运行

测试的脚本
# 1. 检查用户数据目录是否为软链接
Get-Item "$env:APPDATA\Code" | Format-List Mode,LinkType,Target,Name

# 2. 检查扩展目录是否为软链接
Get-Item "$env:USERPROFILE\.vscode\extensions" | Format-List Mode,LinkType,Target,Name

# 3. 查看 VS Code 启动参数(通过任务管理器查看,也可以用下面命令)
# PS 没法直接查进程参数,建议手动打开任务管理器查看 Code.exe 命令行

# 4. 查看 C 盘用户数据目录是否为空(或变成软链接)
Get-ChildItem "$env:APPDATA\Code"

新方法

由于将默认安装路径(一般是C:\Users\你的用户名.vscode)下的extensions文件夹剪切到想放的目录下,比如放在D:.vscode下面。
建议不要将插件路径放到vscode的安装目录下,因为vscode更新刷新安装目录,会导致非安装时创建的文件被删除。
把用户数据和插件放在D盘Application/.vscode文件夹

更新脚本
# ====================================================================
# VS Code 数据强制迁移与合并脚本 (数据安全型)
# ====================================================================

# --- 1. 权限检查 ---
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    Write-Host "错误:请右键以管理员身份运行!" -ForegroundColor Red
    exit
}

try {
    # --- 2. 彻底关闭进程 ---
    Write-Host "正在关闭 VS Code 以释放文件占用..." -ForegroundColor Cyan
    taskkill /F /IM Code.exe 2>$null
    Start-Sleep -Seconds 2

    # 配置路径
    $TARGET_BASE = "D:\Application\.vscode"
    $DATA_DIR    = "$TARGET_BASE\data"
    $EXT_DIR     = "$TARGET_BASE\extensions"

    $Paths = @(
        @{ Old = "$env:APPDATA\Code"; New = $DATA_DIR; Name = "用户配置" },
        @{ Old = "$env:USERPROFILE\.vscode\extensions"; New = $EXT_DIR; Name = "插件数据" }
    )

    foreach ($item in $Paths) {
        $oldPath = $item.Old
        $newPath = $item.New

        Write-Host "`n--- 正在处理 $($item.Name) ---" -ForegroundColor White

        # 确保 D 盘目标目录存在
        if (-not (Test-Path $newPath)) { 
            New-Item -ItemType Directory -Force -Path $newPath | Out-Null 
        }

        if (Test-Path $oldPath) {
            $isLink = (Get-Item $oldPath).LinkType
            
            if ($isLink) {
                # 如果是软连接,我们担心它指向了错误的地方,先移除链接(不伤及源文件)
                Write-Host "检测到现有链接,正在解除并准备同步..." -ForegroundColor Yellow
                # 注意:这里只删除链接本身
                cmd /c rmdir "$oldPath" 2>$null
                if (Test-Path $oldPath) { Remove-Item -Path $oldPath -Force }
            } 
            
            # 关键步骤:无论刚才是什么,现在如果 C 盘还有残留文件夹,就执行数据搬运
            if (Test-Path $oldPath) {
                Write-Host "正在将 C 盘现有文件合并至 D 盘 (使用 Robocopy)..." -ForegroundColor Yellow
                # /E: 递归子目录 /MOVE: 移动后删除源 /R:3: 失败重试3次 /W:2: 等待2秒
                # /XF: 排除正在占用的锁定文件
                robocopy "$oldPath" "$newPath" /E /MOVE /R:3 /W:2 /V /XF *.log 2>$null
                
                # 再次清理可能残留的空目录
                if (Test-Path $oldPath) { Remove-Item -Path $oldPath -Recurse -Force -Confirm:$false }
            }
        }

        # --- 3. 重新建立正确的软连接 ---
        Write-Host "正在重新建立指向 D 盘的软连接..." -ForegroundColor Green
        $parentDir = Split-Path $oldPath
        if (-not (Test-Path $parentDir)) { New-Item -ItemType Directory -Force -Path $parentDir | Out-Null }
        
        cmd /c mklink /J "$oldPath" "$newPath"
    }

    Write-Host "`n✅ 数据迁移与链接修复完成!数据已安全同步至 D 盘。" -ForegroundColor Cyan

} catch {
    Write-Host "发生致命错误: $($_.Exception.Message)" -ForegroundColor Red
}

Read-Host "`n按回车键退出..."

常用快捷键

这里为您整理了 VS Code 中最常用、最高效的快捷键,按功能分类。

💡 说明

  • Windows/Linux 用户直接参考下表。
  • macOS 用户请将 Ctrl 替换为 Cmd (⌘),将 Alt 替换为 Option (⌥)

1. 核心与通用 (最常用)

Windows/Linux 快捷键 功能描述 备注
Ctrl + Shift + P 打开命令面板 VS Code 最核心的功能,可以输入命令执行任何操作
Ctrl + P 快速打开文件 输入文件名快速跳转,无需在侧边栏寻找
Ctrl + , 打开设置 快速修改编辑器配置
Ctrl + Shift + N 打开新窗口 启动一个新的 VS Code 实例
Ctrl + Shift + W 关闭窗口 关闭当前 VS Code 窗口

2. 代码编辑 (编写代码神器)

Windows/Linux 快捷键 功能描述 备注
Ctrl + / 行注释/取消注释 自动根据语言选择注释符号
Alt + ↑ / ↓ 上下移动当前行 极速调整代码顺序,无需复制粘贴
Shift + Alt + ↑ / ↓ 上下复制当前行 快速克隆代码行
Ctrl + Enter 在下方插入新行 光标在行中间时也能直接跳到下一行
Ctrl + Shift + Enter 在上方插入新行 快速在当前行上面插入空行
Tab / Shift + Tab 缩进 / 减少缩进 调整代码层级
Shift + Alt + F 格式化代码 一键美化代码排版

3. 光标与选择 (多光标黑科技)

Windows/Linux 快捷键 功能描述 备注
Alt + 鼠标左键 添加多光标 在不同位置同时编辑
Ctrl + D 选中下一个匹配项 连续按可同时选中多个相同的单词进行修改
Ctrl + U 回退上一个光标操作 如果 Ctrl+D 选多了,可以用这个回退
Ctrl + Alt + ↑ / ↓ 列模式选择 垂直生成一排光标
Ctrl + L 选中当前行 快速选中整行代码

4. 查找与替换

Windows/Linux 快捷键 功能描述 备注
Ctrl + F 文件内查找
Ctrl + H 文件内替换
Ctrl + Shift + F 全局查找 在整个项目文件夹中搜索
Ctrl + Shift + H 全局替换 在整个项目中替换

5. 导航与跳转

Windows/Linux 快捷键 功能描述 备注
Ctrl + G 跳转到指定行 输入行号直接跳转
F12 转到定义 跳转到函数或变量定义的地方
Alt + ← / → 前进 / 后退 在光标的历史位置之间切换
Ctrl + Home / End 跳转到文件头 / 尾
Ctrl + Tab 切换已打开的文件 类似于 Windows 的 Alt+Tab

6. 界面与终端

Windows/Linux 快捷键 功能描述 备注
Ctrl + ` 打开/隐藏终端 快速调出命令行 (` 是键盘左上角波浪号键)
Ctrl + B 显示/隐藏侧边栏 增大代码编辑可视面积
*Ctrl + * 拆分编辑器 将屏幕切分为左右两栏对比代码
Ctrl + + / - 放大 / 缩小界面 调整整体字体大小

7. 基础折叠 (针对光标所在代码块)

Windows/Linux 快捷键 macOS 快捷键 功能描述 记忆技巧
Ctrl + Shift + [ Cmd + Option + [ 折叠 (Fold) 左括号 [ 代表“收起来”
Ctrl + Shift + ] Cmd + Option + ] 展开 (Unfold) 右括号 ] 代表“打开”
:--- :--- :--- :---
Ctrl + K, Ctrl + 0 Cmd + K, Cmd + 0 折叠所有代码 0 代表全部归零/收起
Ctrl + K, Ctrl + J Cmd + K, Cmd + J 展开所有代码 J 代表 "Juicy" (展开显示内容)
Ctrl + K, Ctrl + 1 Cmd + K, Cmd + 1 折叠级别 1 只保留最外层的类/函数定义
Ctrl + K, Ctrl + 2 Cmd + K, Cmd + 2 折叠级别 2 保留两层嵌套,以此类推
Windows/Linux 快捷键 macOS 快捷键 功能描述
:--- :--- :---
Ctrl + K, Ctrl + L Cmd + K, Cmd + L 切换折叠状态 (Toggle)
如果当前折叠就展开,展开就折叠
Ctrl + K, Ctrl + / Cmd + K, Cmd + / 折叠/展开所有块注释

posted @ 2025-08-10 23:48  tokirin994  阅读(53)  评论(0)    收藏  举报