若要在 Visual Studio Code 中移除文字裡的空行,請將檔案內容貼到 Remove Empty Lines 工具,選擇與您檔案中「空白」定義相符的模式,然後將清理後的結果複製回 VS Code。此工具會在本機從貼上的純文字中過濾空白的行——不需要輸入正則表示式、不需要安裝擴充功能,也不需要上傳到遠端服務。輸入上限為一百萬個 UTF-16 程式碼單位,且實作會精確回報移除了多少行、保留了多少行。Whitespace-only 模式(預設)會移除經 Unicode 感知修剪後為空白的任何一行,包括完全由空格、Tab 或不斷行空格組成的行。Strict-empty 模式則會保留每一個至少含有一個程式碼單位的行,當您希望保留在資料中具有意義的純縮排行時,這是正確的選擇。被保留的行永遠不會被修改:前置縮排、尾端空格、重複的內部空白、標點符號、字母大小寫以及 Unicode 字元都會與您貼上時完全一致。產生的輸出會以 LF 連接保留下來的行,因此混合的 CRLF、CR 與 LF 來源行尾會統一為單一風格。

how to remove empty lines in visual studio code
在 Visual Studio Code 中安全地移除空行

為何本機工具勝過 VS Code 中的正則表示式取代

VS Code 內建的尋找與取代功能可以使用像 ^\s*(?=\r?$)\n 這樣的規則表示式來刪除空行,雖然這個方法可行,但會帶來若干實際成本。類似的正則表示式必須輸入得完全正確,而 VS Code 搜尋面板的反斜線慣例與使用者來自其他編輯器的肌肉記憶不同,一個小錯誤(少打一個問號、漏掉一個群組)就會在不知不覺中留下一半的空白行。系統不會告訴您總共移除了多少行;您只會看到最終檔案長度的變化。沒有預覽功能,因此一個錯字可能會直接改動檔案內容,而復原堆疊就成為唯一的安全網。對於一次性的臨時清理工作,正則表示式尚可勝任,但若是對從其他應用程式複製出來的貼上表格、匯出記錄或 Markdown 草稿反覆進行清理,專用的瀏覽器工具會更快也更安全。

三步驟從 VS Code 文字中去除空行

  1. 開啟 Remove Empty Lines 頁面,將 VS Code 中的文字貼入輸入框。文字可以來自 VS Code 視為純文字的任何檔案——Markdown 草稿、CSV 匯出、組態設定區塊、記錄擷取、字幕片段或電子郵件清單。
  2. 決定何者構成空白。若您檔案中看似空白的行實際上含有空格或 Tab(在試算表中編輯後非常常見),請保留啟用 whitespace-only 選項。如果您只想刪除零程式碼單位的行,並希望保留純縮排行以供後續檢查,請關閉此選項。
  3. 點選處理動作並閱讀摘要:工具會回報移除了多少輸入行以及保留了多少行。複製清理後的文字並貼回您的 VS Code 緩衝區,取代原本的選取內容。

選擇何者構成空白

whitespace-only 選項預設為啟用,因為視覺上看起來空白的行常常含有編輯器或試算表留下的隱形縮排——肉眼看不出差異,但這些行仍會佔用記憶體並破壞差異比對。strict-empty 選項在以下情境中很有用:純縮排行在您的資料中具有意義(例如產生報告中的縮排佔位行),或您需要將「空」與「僅含空白」記錄之間的區別保留下來以利後續診斷步驟。在底層,空白測試使用瀏覽器內建的 Unicode 感知修剪行為,相關說明請參閱 MDN 的 String.trim 參考文件,涵蓋空格、Tab、不斷行空格以及其他 JavaScript 能識別的空白字元。

模式移除內容保留內容
Whitespace-only(預設)經 Unicode 感知修剪後為空白的行:長度為零、全部為空格、全部為 Tab、不斷行空格,或任何其他已識別的空白至少含有一個非空白字元的行;保留內容不變
Strict empty僅限零程式碼單位的行含有單一空格、Tab 或任何空白字元的行;保留內容不變

混合的 CRLF、CR 與 LF 行尾會如何處理

VS Code 能順利開啟在 Windows(CRLF)、經典 Mac(CR)與 Unix(LF)下儲存的檔案,但當您將這些混合行尾的內容貼到另一個工具時,通常無法分辨各個行界線的類型。此工具將 CRLF、獨立的 CR 與 LF 都視為行界線。CRLF 算作一個界線而非兩個,因此 Windows 風格的空行不會被誤算成空行加內容行兩次。產生的輸出會以 LF 連接保留下來的行,這代表您貼上的 Windows 檔案會變成統一的 Unix 風格結果。若您後續的工作流程要求 CRLF,請在貼回之前對清理後的文字執行獨立的換行轉換。此工具絕不會默默地將來源內容本身標準化——它只會標準化保留行之間的界線字元。

工具不會變更的部分

被保留的行絕不會被修剪。前置縮排、尾端空格、Tab、重複的內部空格、標點符號、字母大小寫以及 Unicode 字元都會與您貼上時完全一致。工具不會折疊行內空白、自動換行、移除重複內容、排序記錄,也不會標準化 Unicode。它唯一做的就是判斷每一個完整行是否符合所選的空行判定條件。若您需要在移除空行之外再進行重複資料刪除,請將結果再透過 Remove Duplicate Lines 工具處理,該工具會保留每行的第一次出現,且原樣保留被保留下來的文字。若您需要將保留下來的行合併成單一段落或在指定的欄寬自動換行,則是另外的獨立操作,由不同的工具負責。

VS Code 替代方案一覽

沒有一種方法能適用於所有清理工作。正確的選擇取決於檔案大小、清理作業的重複頻率,以及您對規則表示式或 shell 指令的熟悉程度。

方法優點取捨
VS Code 正則表示式尋找與取代 (^\\s*(?=\\r?$)\\n)內建功能,無需額外工具,可直接對開啟中的檔案執行容易打錯字,沒有移除數量統計,沒有預覽,會直接變更開啟中的緩衝區
VS Code 擴充功能(例如 Remove Empty Lines)在編輯器內執行,可用鍵盤操作,每個檔案皆可重複使用需逐台機器安裝,需要擴充功能更新,且仰賴擴充功能作者
終端機指令(awk、sed、grep -v '^$')可編寫指令稿、可重複執行,可處理超過一百萬個字元的檔案需要熟悉 shell,語法因平台而異,容易誤刪過多內容
Remove Empty Lines 瀏覽器工具無需安裝,模式選擇明確,回報移除數量,上限為一百萬個字元,無需上傳任何內容需要將文字從 VS Code 貼出再貼回

需要知道的限制與邊緣情況

此工具接受最多一百萬個 UTF-16 程式碼單位的輸入。剛好達到上限的文字會被處理;多出一個程式碼單位就會導致明確的錯誤且不會產生部分輸出。此工具絕不會抽樣、切片或在無聲無息中截斷較大的貼上內容,因此過大的輸入一律會以明顯方式失敗,而不會產生誤導性的部分結果。完全為空的輸入會在處理前被拒絕,因此您不會看到一份含糊的報告聲稱「缺少文字」算是可移除的一行。僅含空白的輸入則是有效的:在啟用 whitespace-only 移除時,結果會是空字串並顯示移除了一行;在 strict-empty 移除時,該空白行則會被保留。更改輸入或空行選項會立即清除先前的輸出與計數,因此過時的數字絕不會出現在新貼上的內容旁邊。此工具不會解析含有內嵌換行符的 CSV 記錄、加上引號的 JSON 字串、RTF、Word 文件或 PDF 版面配置——它只會看到瀏覽器字串以及文件所述的行界線。

對於明顯超過一百萬個字元的檔案,或需要在 shell 指令稿或 CI 管線中執行的清理工作,命令列方式才是正確的答案。對於任何可以貼到瀏覽器分頁中的內容,Remove Empty Lines 工具提供了明確的模式選擇、移除數量統計,以及尊重每一個被保留程式碼單位的結果。在 VS Code 中覆寫原始檔案之前,請務必先檢視清理後的輸出,特別是在那些空行有助於可讀性(即使不影響執行結果)的程式語言或格式中。

若想深入了解,請參閱 Python Regex: Remove Punctuation From Any String

若想深入了解,請參閱 How to Get a Random Word in Python Without Code