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 + / | 折叠/展开所有块注释 |
浙公网安备 33010602011771号