Google Docs 並未提供一個內建按鈕可以一次刪除所有類型的空行,因此最快速的作法是複製文件文字、透過本機的空行過濾器(例如 移除空行 工具)處理後,再將清理後的文字貼回同一份文件。空行之所以會出現在文件中,是因為來源素材原本就不是為散文所設計:表格、CSV 匯出、設定區塊、電子郵件清單、字幕片段以及 Markdown 草稿,全都帶有在 Google Docs 文件段落中看起來不對勁的空白邊界。使用退格鍵手動刪除對於少數空隙還算可行,但一旦草稿累積了數十個空行就會變得繁瑣,而且它無法分辨真正空白的段落與僅因包含空格、Tab 或不斷行空格而看起來空白的列。標準的「尋找並取代」對話框可以比對重複的段落標記以進行快速清理,但它不會計算處理了幾行、無法在單次處理中區分真正空白的列與僅含空白的列,也無法正規化貼上內容常夾帶的混合 CRLF 與 LF 結尾。基於瀏覽器的工具可讓整個工作流程保持在本地:貼上文字、選擇要以多嚴格的標準定義空行、複製結果,然後在不遺失真正重要的原始行數下取代文件內容。

為什麼空行會在 Google Docs 中堆積
Google Docs 文件中出現的大部分空行,都是從貼上的內容沿襲而來的。從 Gmail 複製的電子郵件討論串,經常在引述回覆之間夾帶雙重換行。從 Google 試算表匯出的檔案則帶有尾端的空白儲存格,在目的文件中會變成空白段落。SRT 與 VTT 等字幕檔會在時間軸中繼資料周圍插入空白列。從編輯器複製的程式碼片段與設定區塊包含刻意保留的空行,這在來源語言中有助於閱讀,放在散文中卻顯得多餘。Markdown 草稿則經常會在分節處額外加上換行,因為該格式本身就依賴這些換行。
由於上述每個來源產生空白的方式都不同,Google Docs 文件中的空隙很少是一致的。有些是真正的零長度段落,有些是只包含空格或不斷行空格的段落(來自已設定樣式的網頁),也有些是部分刪除後留下的重複列。同一份文件可能混合這三種情況,這也是為何一體適用的刪除方式經常漏掉真正需要清理的列,卻默默移除了應該保留的列。
如何在 Google Docs 中移除空行
Google Docs 本身針對此問題提供兩個內建選項。第一個是標準的「尋找並取代」對話框,可以在搜尋欄位中比對雙重換行,但無法觸及那些因包含空格或不斷行空格而看似空白的列。第二個是手動刪除,對少數空隙可行,但對於有數十個空行的文件並不實際。本機的瀏覽器工具則提供第三種選項,能在單次處理中同時處理這兩種空白,並回報實際移除了幾行、保留了幾行。在 Google Docs 中的完整工作流程非常簡單。
- 開啟包含要清理空行的 Google Docs 文件。
- 使用 Ctrl+A(macOS 為 Cmd+A)選取所有文字,然後使用 Ctrl+C 複製。
- 在新分頁中開啟「移除空行」工具,並將文字貼到其輸入框中。
- 決定是否啟用「僅含空白字元」選項(預設為啟用),或停用此選項以僅處理嚴格的零長度行。
- 按下處理按鈕,並檢視工具所回報的已移除與已保留行數。
- 從結果框中複製清理後的輸出內容。
- 返回 Google Docs 文件,按下 Ctrl+A 選取原始內容,然後使用 Ctrl+V 將清理後的文字貼上覆蓋。
- 若結果有任何異常,立即使用 Ctrl+Z 復原,因為在您複製其他內容之前,原始行數都會保留在剪貼簿中。
這個往返流程完全在瀏覽器中進行,因此不會將任何文件內容傳送至遠端伺服器,而回報的行數可讓您在覆寫來源之前,判斷清理力度是否足夠。
嚴格空白模式與僅含空白字元模式
您選擇的空行判定條件,會決定哪些列會被移除。「僅含空白字元」選項預設為啟用,因為 Google Docs 中外觀空白的列,經常包含隱藏的縮排、從複製程式碼留下的殘留 Tab,或是從已設定樣式的網頁貼上的不斷行空格。啟用此選項後,只要 JavaScript 的 trim 處理後結果為空,該行就會被移除,這涵蓋了普通空白段落以及包含空格、Tab、不斷行空格或瀏覽器可處理的其他 Unicode 空白字元的列。停用此選項時,則只有字面意義上零個字碼單位的行會被移除,因此任何包含至少一個空格或 Tab 的列都會原封不動地保留。相關的瀏覽器行為已記錄於 MDN String.trim 參考文件 中。
下表摘要說明每個選項如何處理一組簡單的範例列。
| 列內容 | 啟用僅含空白字元 | 停用僅含空白字元 |
|---|---|---|
| 空白段落 | 已移除 | 已移除 |
| 三個空格(" ") | 已移除 | 已保留 |
| 單一 Tab 字元 | 已移除 | 已保留 |
| 不斷行空格 | 已移除 | 已保留 |
| 可見文字,例如 "Hello" | 已保留 | 已保留 |
當來源的空白列帶有意義時(例如 YAML 檔案中僅作為縮排的分隔列),或當您希望保留「真正空白列」與「僅含空白字元列」之間的區別,以利後續診斷時,嚴格模式會是正確的選擇。
貼上內容中的換行字元行為
換行字元雖然看不見,但會影響文字在 Google Docs 與其他程式之間往返的結果。Windows 上大部分編輯器使用 CRLF,傳統 Mac 檔案使用獨立的 CR,Unix 工具與現代網頁則使用 LF。Google Docs 將換行儲存為自有格式的段落標記,因此複製出來的文字在離開文件前會先經過正規化,但貼進來的任何內容則會保留來源所攜帶的換行字元。這代表從 Windows 電子郵件用戶端匯入的內容、匯出的 CSV,以及 Markdown 草稿,可以在同一份 Google Docs 檔案中以不同的邊界並存。
「移除空行」工具會將 CRLF、獨立的 CR 與 LF 都視為換行邊界,並將一組 CRLF 計算為一個邊界,因此無論來源為何,輸入行數都能保持一致。輸出內容則會以 LF 連接保留的行,賦予混合來源內容統一的邊界樣式,使其能乾淨地貼回 Google Docs 或任何其他現代編輯器。
| 來源換行字元 | 邊界數 | 輸出換行字元 |
|---|---|---|
| CRLF(Windows) | 1 | LF |
| CR(傳統 Mac) | 1 | LF |
| LF(Unix/網頁) | 1 | LF |
| 單次貼上中混合 | 每行 1 | LF |
什麼時候該保留空行不動
空行並不一定是多餘的。Python 等程式語言會使用縮排與空行來區隔邏輯區塊,移除它們可能會破壞貼到 Google Docs 文件中供討論的程式碼片段。Markdown 的純文字草稿依賴空行作為段落分隔,壓縮這些空行會讓文件變成一面文字牆。即使在散文中,段落之間或置中標題周圍刻意保留的一個空行,往往是有意為之的排版選擇,而非雜訊。
最安全的習慣,是在將清理後的輸出貼回覆蓋原始內容前先行預覽。如果原本應該分開的段落現在黏在一起,請將空行判定條件切換為嚴格模式後再重新清理一次,因為該空隙可能就是您其實想保留的「僅含空白字元」列。檢視結果底部的已移除與已保留行數,可以讓這類稽核既快速又可逆,特別是針對空行在外觀之外還帶有排版份量的文件。對於從 Google 試算表匯出並貼上的試算表內容,相同的方法也適用,只是來源列的外觀不同,相關的工作流程已記載於 如何乾淨地從 Excel 刪除空行 一文,內容涵蓋專屬於試算表的相同作業方式。
如果您正在權衡各種選項,在 Java 中從字串移除標點符號 一文對此有詳細說明。