在 Notepad++ 中移除空行,代表從文字檔中去除空白行,讓結果更精簡、可讀,並消除多餘的垂直間距。這款編輯器內建了三種實用的做法來完成這項工作:「編輯 > 行操作」選單、搭配正規表示式的「尋找並取代」對話框,以及TextFX Characters外掛。這三種方式對「完全空白的行」和「只含空白字元的行」處理方式不同,這也是為什麼將同一段文字貼到不同方法中,可能產生不同輸出。有些只會移除零長度的行,有些則會把整行都是空格或 Tab 的行視為空白。本指南會逐一介紹這三種 Notepad++ 的做法,接著再示範一個不需要外掛、正規表示式或儲存檔案、就能在瀏覽器中完成同樣清理工作的替代方案。最佳選擇取決於你有多少文字、是否需要保留縮排,以及你是否信任自己能正確輸入那段正規表示式。

how to remove empty lines in notepad ++
在 Notepad++ 中移除空行而不破壞程式碼

為什麼空行會在 Notepad++ 中堆積

從網頁、試算表、PDF 或日誌檔複製的純文字,通常會夾帶額外的換行字元,在原始來源中看起來沒問題,但在 Notepad++ 中卻顯得突兀。常見的原因包括:由 HTML 轉成的純文字、結尾帶空白記錄的 CSV 匯出檔、含有摺疊方法區塊的 IDE 程式碼片段,以及每一則訊息都以兩個換行結尾的聊天記錄。當你刪除一行但沒有同時刪除前導空白時,編輯器也會留下純粹由縮排構成的行。無論原因為何,結果都一樣:檔案比實際需要的還長,垂直間距不僅讓讀者困惑,有時還會破壞那些將空行視為記錄分隔符的解析器。

在選擇移除方式之前,先決定對你的用途來說,一整行都是空格、Tab 或不可見字元的行是否算作「空白」。在 YAML、Python 或 Markdown 中,使用純空白行作為視覺分隔的程式碼,一旦這些行消失,可能會喪失原本的語意。從試算表匯出的電子郵件地址清單,則通常應該移除這些行。同樣的內容,兩種截然不同的答案,差異就完全取決於那一個切換選項。

在 Notepad++ 中移除空行(內建方法)

Notepad++ 提供三種內建途徑來取得沒有空行的檔案,最佳選擇取決於你想要一鍵完成選單操作,還是需要正規表示式的精確度。這三種方式都可以用 Ctrl+Z 復原,所以即使操作失誤,也只需一個還原動作就能挽回。

方法 1:「編輯 > 行操作」選單。開啟檔案,在選單列點選「編輯」,將滑鼠停在「行操作」上,然後選擇以下兩個選項之一。「移除空行」只會刪除完全空白的行。「移除空行(含空白字元)」則還會一併刪除只包含空格、Tab 或其他不可見字元的行。這兩個動作都會立即在當前文件上執行,都不需要輸入正規表示式。

方法 2:使用正規表示式進行尋找並取代。按下 Ctrl+H 開啟對話框。在左下角的「搜尋模式」中勾選「正規表示式」。將「尋找目標」設為 ^\s*\r?\n,將「取代為」留空,然後點選「全部取代」。^ 符號對應行的開頭,\s* 對應零個或多個空白字元,\r?\n 則對應一個可選的歸位字元後接換行字元。這個樣式能一次同時移除零長度行和只含空白的行。常見的錯誤是漏寫了 \s*,導致縮排過的空行仍會留下;或是不小心開啟了「. 對應換行」,這可能會讓取代結果暴增。

方法 3:TextFX Characters 外掛。如果已安裝 TextFX(許多舊版 Notepad++ 內建此套件),請前往「外掛 > TextFX Characters」,選擇「Delete empty lines」「Delete surplus blank lines」。此外掛在最新版本已不再維護,因此較新的安裝可能需要透過外掛管理器手動新增,或是完全略過這個選項。

方法 選單路徑 將只含空白的行視為空行 可復原 需要外掛
行操作(嚴格) 編輯 > 行操作 > 移除空行 是(Ctrl+Z)
行操作(含空白) 編輯 > 行操作 > 移除空行(含空白字元) 是(Ctrl+Z)
尋找並取代正規表示式 Ctrl+H,搜尋模式 = 正規表示式,樣式 ^\s*\r?\n 是(Ctrl+Z)
TextFX Characters 外掛 > TextFX Characters > Delete empty lines 可選 是(Ctrl+Z)

免正規表示式的瀏覽器替代方案

Notepad++ 並非隨時可用:你可能在借用他人的電腦、使用 Chromebook,或處理一個大到無法順暢開啟的檔案。在實際資料上,如果不小心打錯正規表示式的右大括號,可能會損壞檔案,這也是一個真實的風險。針對這些情境,「移除空行」工具完全在當前的瀏覽器分頁中執行。貼上文字,選擇是否將只含空白的行視為空白,點擊一次,清理後的輸出便會顯示,並明確標示已移除與保留的行數。整個過程中沒有任何資料離開瀏覽器,不需要外掛,也不需要帳號。

如何使用「移除空行」工具

  1. 在瀏覽器中開啟「移除空行」工具。
  2. 將含有空行的文字貼入輸入區域,確保總長度維持在一百萬個 UTF-16 字碼單元以內。
  3. 決定是否將只含空白的行視為空白。保持選項啟用,可一併移除整行都是空格、Tab 或不斷行空白的行;若停用此選項,則只會移除完全零長度的行。
  4. 點選處理按鈕,並檢視摘要,其中會回報移除了多少行、保留了多少行。
  5. 從輸出區域複製清理後的文字,使用 Ctrl+V 貼回 Notepad++,再儲存覆蓋原檔。

摘要列是最簡便的方式,可確認清理結果是否符合預期。一個原本有 250 行輸入、顯示保留 198 行的檔案,代表移除了 52 行空白;如果該檔案仍在 Notepad++ 中開啟,你可以用行數計數器交叉驗證。在覆蓋儲存實際運作的檔案之前,務必先確認結果,特別是在那些即使空行不影響執行、卻有助於閱讀的程式語言中。

只含空白模式 vs 嚴格空行模式

兩者之間的單一切換選項,決定了哪些行會被移除、哪些會保留。在啟用只含空白模式(預設)的情況下,當 JavaScript 的 trim 函式讓該行變為空字串時,該行就會被移除。這涵蓋了普通的空行,以及只包含已辨識空白字元(例如空格、Tab、不斷行空白,或瀏覽器處理的其他 Unicode 空白)的行,相關說明記載於 MDN String trim 頁面。這適用於貼上的表格、Markdown 草稿、字幕片段、電子郵件清單、設定區塊,以及那些常藏有編輯器或試算表留下之不可見縮排的日誌。

在嚴格僅空行模式下,只有零字碼單元的行會被移除。包含一個空格、一個 Tab 或其他空白字元的行,會被原樣保留。當縮排專用的行在 YAML、Makefile 或 Python 中具有意義時,或當你想在空行與只含空白的記錄之間保留可見區別,以便進行後續的診斷步驟時,這個模式就很重要。兩種模式都不會對保留的行進行修剪。前導縮排、尾端空格、內部重複空格、標點符號、字母大小寫以及 Unicode 字元,都會逐位元組保持不變。此工具不會折疊行內空白、不會自動換行、不會移除重複內容、不會排序記錄,也不會正規化 Unicode。它唯一做的判斷,就是依據所選的「空行」條件,檢視每一個完整的行是否通過。

模式 預設狀態 會移除 會保留 最適合
只含空白 啟用 零長度行,以及經 Unicode trim 後為空的行 含有任何非空白字元的行 貼上的表格、Markdown 草稿、日誌、複製的網頁文字
嚴格僅空行 停用 僅零長度行 含有一個或多個空白字元的行 含有具語意之縮排專用行的原始碼

限制、換行字元,以及此工具不會做的事

輸入分割器可辨識 CRLF、獨立的 CR 以及 LF,其中 CRLF 算作一個邊界,相關說明記載於 MDN String split 頁面。產生的輸出一律以 LF 連接保留的行,因此混合 Windows 與 Unix 換行符號的檔案,離開瀏覽器後會統一為 LF。輸入結尾處的換行會形成一個最終空行,該行在任一模式下都會被移除;而完全為空的輸入會在處理前遭到拒絕,以避免出現可能將「沒有文字」誤判為一行可移除內容的含糊報告。

輸入上限為一百萬個 UTF-16 字碼單元,以確保瀏覽器的記憶體用量與結果呈現可預期。剛好達到上限的文字會被接受。多出一個字碼單元則會顯示明確的錯誤,且不會產生部分輸出;此工具絕不會抽樣、切割,或默默地截斷過大的輸入。變更輸入或空行選項,會立即清除先前的輸出與計數。實作方式是在分割後執行單一有序的處理流程:依序對每一行評估所選條件、依原始順序附加保留的值、從輸入行數中減去保留行數,然後將結果串接起來。

此工具不會解析含有內嵌換行的 CSV 記錄、引號內含換行的 JSON 字串、RTF 文字、Word 文件或 PDF 版面。它只看得到瀏覽器字串與文件記載的換行邊界。如需處理重複值,請使用 「移除重複行」工具;若要以空格或不留字元的方式合併行,請使用 「移除換行符號」工具;若行的結構含有純文字以外的語法,則請使用具備格式感知的編輯器。

如果你正在權衡各種選項,無需上傳即可批次為文字加入行號對此有詳細說明。

如果你正在權衡各種選項,在瀏覽器中為大量文字的每一行加入前綴對此有詳細說明。