在 Notepad++ 中移除空行,代表從文字檔中去除空白行,讓結果更精簡、可讀,並消除多餘的垂直間距。這款編輯器內建了三種實用的做法來完成這項工作:「編輯 > 行操作」選單、搭配正規表示式的「尋找並取代」對話框,以及TextFX Characters外掛。這三種方式對「完全空白的行」和「只含空白字元的行」處理方式不同,這也是為什麼將同一段文字貼到不同方法中,可能產生不同輸出。有些只會移除零長度的行,有些則會把整行都是空格或 Tab 的行視為空白。本指南會逐一介紹這三種 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,或處理一個大到無法順暢開啟的檔案。在實際資料上,如果不小心打錯正規表示式的右大括號,可能會損壞檔案,這也是一個真實的風險。針對這些情境,「移除空行」工具完全在當前的瀏覽器分頁中執行。貼上文字,選擇是否將只含空白的行視為空白,點擊一次,清理後的輸出便會顯示,並明確標示已移除與保留的行數。整個過程中沒有任何資料離開瀏覽器,不需要外掛,也不需要帳號。
如何使用「移除空行」工具
- 在瀏覽器中開啟「移除空行」工具。
- 將含有空行的文字貼入輸入區域,確保總長度維持在一百萬個 UTF-16 字碼單元以內。
- 決定是否將只含空白的行視為空白。保持選項啟用,可一併移除整行都是空格、Tab 或不斷行空白的行;若停用此選項,則只會移除完全零長度的行。
- 點選處理按鈕,並檢視摘要,其中會回報移除了多少行、保留了多少行。
- 從輸出區域複製清理後的文字,使用 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 版面。它只看得到瀏覽器字串與文件記載的換行邊界。如需處理重複值,請使用 「移除重複行」工具;若要以空格或不留字元的方式合併行,請使用 「移除換行符號」工具;若行的結構含有純文字以外的語法,則請使用具備格式感知的編輯器。
如果你正在權衡各種選項,無需上傳即可批次為文字加入行號對此有詳細說明。
如果你正在權衡各種選項,在瀏覽器中為大量文字的每一行加入前綴對此有詳細說明。