使用 VS Code + WSL 2:Windows 無縫開發 Linux 專案

更新日期: 2025 年 3 月 4 日

在 Windows 上開發 Linux 專案,通常會遇到這些問題:

  • 需要在 Windows 撰寫程式碼,但最終執行環境是 Linux,導致相容性問題。
  • 透過 Windows 檔案系統讀寫 WSL 2 的 Linux 檔案,導致 效能下降
  • 無法直接在 Windows 上使用 Linux 指令(如 gitnpmpip 等)。

解決方案就是 使用 WSL 2 搭配 VS Code,透過一個簡單的指令:

code .

直接在 WSL 2 環境內開啟 VS Code,實現 Windows 與 Linux 的無縫開發體驗。

如果你是 Windows 使用者,希望能在不離開 Windows 的情況下,體驗原生 Linux 開發環境,這篇指南將幫助你順利上手!


安裝 VS Code 並啟用 WSL 2 整合

在開始之前,請確保你已經安裝:

WSL 2(Windows Subsystem for Linux 2)
Ubuntu(或其他 WSL 2 Linux 發行版)
Visual Studio Code
VS Code 的 WSL 擴充套件

安裝 WSL 2

如果你尚未安裝 WSL 2,請打開 PowerShell(管理員權限),輸入:

wsl --install

安裝完成後,重啟電腦,然後確認 WSL 版本:

wsl -l -v

你應該會看到:

NAME            STATE           VERSION
Ubuntu         Running         2

確保 Ubuntu 運行的是 WSL 2,如果顯示的是 VERSION 1,請使用以下指令升級:

wsl --set-version Ubuntu 2

安裝 Visual Studio Code

如果你尚未安裝 VS Code,請前往官方網站下載:VS Code 下載

安裝完成後,開啟 VS Code,並安裝 Remote – WSL 擴充套件

  1. VS Code 內打開 擴充功能視窗(快捷鍵 Ctrl + Shift + X)。
  2. 搜尋 “Remote – WSL”,點擊 安裝

在 WSL 2 內 Clone 專案並開啟 VS Code

當 WSL 2 設置完成後,我們可以直接在 Linux 環境內 git clone 專案,然後透過 code . 來開啟 VS Code。

在 WSL 2 內 Clone Git 專案

開啟 Windows Terminal 或 WSL 2

點擊 Windows 開始選單,搜尋 Ubuntu,開啟 WSL 2。

確保你在 WSL 2 的 Linux 環境,而不是 Windows。

例如:

uname -a

若回傳類似:

Linux DESKTOP-xxxxxx 5.10.16.3-microsoft-standard-WSL2 #1 SMP x86_64 GNU/Linux

代表你已進入 WSL 2。

Clone 你的 Git 專案

git clone https://github.com/yourusername/yourproject.git

(請將 yourusername/yourproject 替換為你的專案路徑)

切換到專案目錄

cd yourproject

cd yourproject

使用 code . 在 WSL 2 內開啟 VS Code

當你進入專案目錄後,執行:

code .

這將會:

開啟 Windows 版 VS Code
但實際上編輯的是 WSL 2 內的 Linux 檔案
終端機也將運行在 WSL 2,讓你可以直接執行 Linux 指令


code . 的運作原理

當你在 WSL 2 內部執行 code . 指令時,其實發生了一系列的交互過程,讓 Windows 端的 VS Code 能夠直接編輯 WSL 2 內的 Linux 檔案,並讓 VS Code 的終端機 直接運行在 WSL 2 環境。

這個過程可以拆解成以下幾個步驟:

graph TD;
    A[在 WSL 2 內執行 \`code .\`] -->|啟動 VS Code Server| B[WSL 2 內部啟動 VS Code Server]
    B -->|建立本機通訊通道| C["Windows VS Code 連接 VS Code Server"]
    C -->|獲取 WSL 2 內的專案檔案| D[VS Code 直接存取 Linux 檔案]
    D -->|啟動 VS Code 內建終端機| E[終端機運行於 WSL 2 環境]
    E -->|執行 Git、NPM、Python 等命令| F[無縫開發 Linux 應用]

啟動 VS Code:WSL 2 內的 VS Code Server

當你在 WSL 2 的 Linux 終端機中執行:

code .

WSL 2 會做以下動作:

啟動 WSL 2 內的 VS Code Server(遠端伺服器)

  1. 這是一個 在 WSL 2 內運行的後端服務,它允許 Windows 端的 VS Code 與 WSL 2 進行通訊。
  2. 這個伺服器 負責處理 Linux 檔案系統的存取,並讓 Windows 端的 VS Code 可以開啟 WSL 2 內的專案。
  3. 在技術上,這個伺服器會透過 本機 Socket 來建立連線,而不需要透過傳統的網路協議(如 SSH)。
  4. 你可以手動檢查 VS Code Server 是否在 WSL 2 內運行:
ps aux | grep vscode 

若回傳類似:

    youruser 1234 0.0 0.1 123456 7890 ? Ss 10:00 0:00 /home/youruser/.vscode-server/bin/xxxxxxx/server.sh

    代表 VS Code Server 已啟動,並且正在運行。

    設定 WSL 2 的檔案權限與存取

    1. WSL 2 內部使用的 Linux 檔案系統(ext4)Windows 檔案系統(NTFS) 不完全相同。
    2. code . 被執行時,WSL 2 會確保 Windows 端的 VS Code 可以正確存取 WSL 2 內的 Linux 檔案,而不會受到權限問題影響。

    Windows 端 VS Code 連接 WSL 2

    VS Code Server 在 WSL 2 內部啟動 之後,Windows 端的 VS Code GUI 會透過 Remote – WSL 擴充套件 與 WSL 2 建立連線。

    這個過程如下:

    Windows VS Code 透過 WSL 2 內建的 IPC(進程間通訊)機制,連接 VS Code Server

    1. VS Code GUI(Windows 端)VS Code Server(WSL 2 端) 透過一個 本機通道(Localhost Socket) 進行溝通,而不需要網路或 SSH。
    2. 這樣的設計比傳統的「透過 SSH 遠端連線」方式更加高效,因為它完全運行在本機,不受網路延遲影響。

    Windows VS Code 獲取 WSL 2 內的檔案資訊

    1. 當你開啟的檔案在 WSL 2 內部時,VS Code 不會透過 Windows 檔案系統存取,而是直接存取 Linux 環境的檔案。
    2. 例如,當你在 WSL 2 內部執行:
    ls -la 
    1. 你看到的檔案權限和屬性,會與在 Windows C: 磁碟內的檔案有所不同,因為它們實際上是 存儲在 WSL 2 的 ext4 檔案系統中

    同步 Windows 與 WSL 2 內部的終端機環境

    1. 在 VS Code 內部,你可以打開 內建終端機(快捷鍵 Ctrl + ~),你會看到類似這樣的結果:
    youruser@Ubuntu:/home/youruser/yourproject$
    1. 這代表你的終端機已經 運行在 WSL 2 環境,而不是 Windows CMD 或 PowerShell。
    2. 這意味著你可以直接在 VS Code 內的終端機執行 Linux 指令,例如:
    npm install python3 app.py git commit -m "update code"

    在 VS Code 內使用 WSL 2 終端機

    當 Windows 端的 VS Code 透過 VS Code Server 連接 WSL 2 後,你可以直接在 VS Code 內的終端機 運行 Linux 指令。

    如何確認 VS Code 內建終端機運行於 WSL 2

    1. 打開 VS Code 內建終端機(快捷鍵 Ctrl + ~)。
    2. 執行以下指令檢查 Shell 環境:
    echo $SHELL
    1. 如果輸出:
    /bin/bash

      /bin/zsh 

      這代表 你的終端機是運行在 WSL 2 內部,而不是 Windows 的 PowerShell 或 CMD。

      1. 檢查作業系統
      uname -a

      如果輸出:

        Linux DESKTOP-xxxxxx 5.10.16.3-microsoft-standard-WSL2 #1 SMP x86_64 GNU/Linux

        這代表你當前的終端機環境確實是 WSL 2 的 Linux 核心,而不是 Windows。

          code . 的核心優勢

          使用 code . 讓 Windows VS Code 與 WSL 2 無縫整合,提供以下優勢:

          優勢說明
          ✅ Windows VS Code GUI + Linux 環境讓 Windows 使用者可以直接編輯 WSL 2 內的 Linux 檔案
          ✅ 本機 IPC 連線無需透過 SSH,Windows VS Code 直接與 WSL 2 通訊
          ✅ 原生終端機支援VS Code 內的終端機直接運行於 WSL 2,可以執行 Linux 指令
          ✅ 高效能檔案存取透過 WSL 2 內建的 ext4 檔案系統,讀寫速度比透過 Windows 檔案系統快
          ✅ 支援開發工具可直接在 WSL 2 內安裝 Git、Node.js、Python、Docker 等工具,無需額外設定

          WSL 2 + VS Code:無縫開發的優勢

          優勢說明
          ✅ 原生 Linux 環境直接在 WSL 2 內開發,不會有 Windows 和 Linux 相容性問題
          ✅ 高效能檔案存取速度比 Hyper-V 快,避免 Windows ⇄ WSL 2 的性能損耗
          ✅ 無需雙系統直接在 Windows 內開發 Linux 專案,無需切換作業系統
          ✅ Docker 整合可直接在 WSL 2 內運行 Docker 容器,適合後端開發

          總結

          • 在 WSL 2 內 Clone Git 專案
          • 進入專案資料夾,執行 code .
          • VS Code 會自動開啟,並存取 WSL 2 內的檔案
          • 終端機將運行於 WSL 2,讓你直接使用 Linux 指令

          透過 WSL 2 + VS Code,Windows 開發者可以輕鬆體驗 Linux 原生開發環境,讓開發流程更加流暢 🚀!

          Similar Posts