VSCode修改擴充套件和使用者資料夾目錄位置(Windows)

笑而不语心自闲發表於2024-06-18

原文連結:https://blog.csdn.net/weixin_53510183/article/details/126906182

文章目錄

    • `VSCode`便攜版(不推薦)
      • 缺點
    • `VSCode`安裝版(推薦)
      • 終端使用`code .` 命令開啟專案
      • 問題
        • 解決辦法
    • 終極解決辦法!(強烈推薦)


vscode的擴充套件和使用者資料都是預設在C盤下的

extensions:C:\Users\.vscode\extensions

user-data:C:\Users\AppData\Roaming\Code

一般來說,使用者資料夾大小會比擴充套件目錄的大小會大,就我而言,我的擴充套件有1-1.5GB的大小,而使用者資料夾卻佔了我5GB容量,這對C盤容量嚴重不足的使用者是非常難受的

所以,修改這兩個資料夾的目錄位置以及刻不容緩

VSCode便攜版(不推薦)

官方有一個zip版本的VSCode

當我們解壓完畢後:

  1. 在當前VSCode目錄下新建一個data資料夾
  2. 點選Code.exe啟動,啟動完畢後關閉
  3. 進入當前的data目錄,可以發現有擴充套件目錄,以及使用者資料夾
  4. 然後我們只需要將C:\Users\.vscode\extensions目錄下的所有擴充套件資料夾全選複製到extensions目錄中,以及將C:\Users\AppData\Roaming\Code資料夾內的所有檔案全選複製到user-data目錄內,再次開啟Code.exe程式,就可以發現根以前的VSCode一模一樣的配置以及擴充套件

VSCode修改擴充套件和使用者資料夾目錄位置(Windows)

缺點

但是我當時遇到的問題是當檔案右鍵,或者資料夾右鍵時,不能透過VSCode開啟檔案,此時需要開啟登錄檔,修改透過VSCode開啟的程式位置。

同時也發現了一個弊端,就是需要管理員許可權的資料夾打不開,也寫不進去,可以透過將Code.exe程式右鍵->屬性->相容性->以管理員身份執行此程式->應用。但經過這操作後,我發現的問題是VSCode視窗的工作空間不能將檔案拖進去。上網一搜發現,只需要將Code.exe的以管理員身份執行此程式取消勾選,那這不就跟我預期的衝突了嘛😳😳

VSCode安裝版(推薦)

安裝版網址

選擇 System Installer 再根據自己的系統選擇,下面的.zip就是上面說的便攜版

要修改兩個資料夾的位置,就需要使用官方的高階 CLI 選項

有兩個選項我們可以用得上:--extensions-dir <dir>--user-data-dir <dir>,但這些命令對於便攜版是不能生效的

可以將這兩個選項新增到VSCode的快捷方式後面

  • 右鍵VSCode快捷方式->快捷方式->目標-> 在後面新增空格再加上--extensions-dir "D:\.vscode\extensions" --user-data-dir "D:\.vscode\user-data"自行替換目錄位置

  • 我的設定⬇️

"D:\.Software\Microsoft VS Code\Code.exe" --extensions-dir "D:\.vscode\extensions" --extensions-dir "D:\.vscode\extensions" --user-data-dir "D:\.vscode\user-data"

VSCode修改擴充套件和使用者資料夾目錄位置(Windows)

但是就這樣修改不能保證檔案右鍵透過Code開啟會使用指定的 擴充套件資料夾以及使用者資料夾

接下來需要修改登錄檔的主要VSCode開啟方式修改

  • 對選中檔案右鍵點選彈出的選單
  • 對選擇目錄右鍵點選彈出的選單
  • 在目錄空白處右鍵點選彈出的選單
  • 對磁碟分割槽右鍵點選彈出的選單

相對應的登錄檔位置為

計算機\HKEY_CLASSES_ROOT\*\shell\VSCode\command
計算機\HKEY_CLASSES_ROOT\Directory\shell\VSCode\command
計算機\HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode\command
計算機\HKEY_CLASSES_ROOT\Drive\shell\VSCode\command

登錄檔開啟:Win+r->輸入:Regedit->回車

找到這些登錄檔項,在Code.exe 後新增同快捷方式一樣的引數內容:

--extensions-dir "D:\.vscode\extensions" --user-data-dir "D:\.vscode\user-data"

例如:

"D:\.Software\Microsoft VS Code\Code.exe" --extensions-dir "D:\.vscode\extensions"  --user-data-dir "D:\.vscode\user-data" "%1"

VSCode修改擴充套件和使用者資料夾目錄位置(Windows)

將四個登錄檔位置的數值資料一一新增即可,當然主要的是這四個位置,還有一些其他的檔案開啟可以執行新增

終端使用code . 命令開啟專案

當使用code . 命令時,又發現了一個小問題,透過此命令開啟的VSCode 還是不能找到擴充套件和使用者資料夾

解決辦法如下⬇️

VSCode修改擴充套件和使用者資料夾目錄位置(Windows)

安裝版的VSCode會預設幫我們新增環境變數

檢查一下code.cmd檔案

@echo off
setlocal
set VSCODE_DEV=
set ELECTRON_RUN_AS_NODE=1
"%~dp0..\Code.exe" "%~dp0..\resources\app\out\cli.js" --ms-enable-electron-run-as-node %*
endlocal
  • 可以發現第五行有一個..\Code.exe,表示執行上一個目錄的Code.exe程式

  • 再往後面看,可以發現--ms-enable-electron-run-as-node有點像高階CLI選項,我們可以將上面提到的--extensions-dir--user-data-dir繼續新增在後面。下面是我新增後的程式碼,自行更換路徑即可
  • @echo off
    setlocal
    set VSCODE_DEV=
    set ELECTRON_RUN_AS_NODE=1
    "%~dp0..\Code.exe" "%~dp0..\resources\app\out\cli.js" --ms-enable-electron-run-as-node  --extensions-dir "D:\.vscode\extensions"  --user-data-dir "D:\.vscode\user-data" %*
    endlocal

最後再使用code . 命令就可以找到擴充套件和使用者資訊資料夾了

問題

更新之後,VSCode會重置登錄檔

解決辦法

使用登錄檔 .reg 檔案一鍵修改

注意!

  • 地址值有些符號需要使用 \ 轉譯,可透過將複製下來的未轉譯字串路徑使用IDEA 自動轉譯

  • 路徑修改為自己的本地路徑

  • 由於內容出現 透過 Code 開啟 中文,需要將檔案另存為UTF-16 LE登錄檔預設編碼,否則會出現亂碼

  • VSCode修改擴充套件和使用者資料夾目錄位置(Windows)
  • String str = "路徑"
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\VSCode]
@="透過 Code 開啟"
"Icon"="D:\\.Software\\Microsoft VS Code\\Code.exe"

[HKEY_CLASSES_ROOT\*\shell\VSCode\command]
@="\"D:\\.Software\\Microsoft VS Code\\Code.exe\" --extensions-dir \"D:\\.vscode\\extensions\"  --user-data-dir \"D:\\.vscode\\user-data\" \"%1\""
  
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\VSCode]
@="透過 Code 開啟"
"Icon"="D:\\.Software\\Microsoft VS Code\\Code.exe"

[HKEY_CLASSES_ROOT\Directory\shell\VSCode\command]
@="\"D:\\.Software\\Microsoft VS Code\\Code.exe\" --extensions-dir \"D:\\.vscode\\extensions\"  --user-data-dir \"D:\\.vscode\\user-data\" \"%V\""

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode]
@="透過 Code 開啟"
"Icon"="D:\\.Software\\Microsoft VS Code\\Code.exe"

[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode\command]
@="\"D:\\.Software\\Microsoft VS Code\\Code.exe\" --extensions-dir \"D:\\.vscode\\extensions\"  --user-data-dir \"D:\\.vscode\\user-data\" \"%V\""

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Drive\shell\VSCode]
@="透過 Code 開啟"
"Icon"="D:\\.Software\\Microsoft VS Code\\Code.exe"

[HKEY_CLASSES_ROOT\Drive\shell\VSCode\command]
@="\"D:\\.Software\\Microsoft VS Code\\Code.exe\" --extensions-dir \"D:\\.vscode\\extensions\"  --user-data-dir \"D:\\.vscode\\user-data\" \"%V\""

[HKEY_CLASSES_ROOT\vscode\shell\open\command]
@="\"D:\\.Software\\Microsoft VS Code\\Code.exe\" --extensions-dir \"D:\\.vscode\\extensions\" --user-data-dir \"D:\\.vscode\\user-data\" \"--open-url\"  \"--\" \"%1\""

[HKEY_CLASSES_ROOT\VSCodeSourceFile\shell\open\command]
@="\"D:\\.Software\\Microsoft VS Code\\Code.exe\" --extensions-dir \"D:\\.vscode\\extensions\"  --user-data-dir \"D:\\.vscode\\user-data\" \"%1\""

2023/04/16 ↓

當然也可以寫一個bat指令碼自動執行

  • 建立一個code.cmd 將上面的新增命令列引數的內容寫入

  • 重命令 登錄檔批處理檔案為update.reg

  • 建立update.bat 檔案

@echo off

rem 登錄檔的路徑
set "regFilePath=D:\.vscode\update.reg"
rem 重寫的code.cmd 檔案路徑,後面會替換vscode bin 目錄下的code.cmd
set "cmdFilePath=D:\.vscode\code.cmd"
rem VScode的安裝路徑
set "destinationFolderPath=D:\.Software\Microsoft VS Code\bin"
rem ----↓ 以下不用動
set "destinationFilePath=%destinationFolderPath%\code.cmd"

rem 執行登錄檔檔案
regedit /s "%regFilePath%"

rem 複製並替換檔案,需要管理員許可權
copy /y "%cmdFilePath%" "%destinationFolderPath%"
if exist "%destinationFilePath%" (
    takeown /f "%destinationFilePath%"
    icacls "%destinationFilePath%" /grant administrators:F
)
move /y "%destinationFolderPath%\code.cmd" "%destinationFilePath%"
  • 管理員執行update.bat

終極解決辦法!(強烈推薦)

經過一頓操作,終於又想到一個非常簡單的辦法

為VScode C盤預設的 .vscodeCode 建立軟連線
如果根據上一步操作,建議直接解除安裝VSCode,重灌一遍,因為接下來的操作,完全不用那麼麻煩

  • C 盤使用者檔案 Code 直接剪下到新路徑
  • 確保目標路徑資料夾不存在 ,輸入下面的第一條命令。
  • 由於"%USERPROFILE%\.vscode"路徑下有一個預設的extensions,所以不能使用"D:\.vscode\extensions" 路徑,否者會不生效
  • 還有需要注意的是,這個命令是cmd命令,需要使用cmd命令視窗執行
  • 路徑自行替換
mklink /D "%APPDATA%\Code" "D:\.vscode\user-data"
mklink /D "%USERPROFILE%\.vscode" "D:\.vscode\"
  • 如果需要刪除軟連線
rd /s "%APPDATA%\Code"

相關文章