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

how to remove empty lines in google docs
how to remove empty lines in google docs

為什麼空行會在 Google Docs 中堆積

Google Docs 文件中出現的大部分空行,都是從貼上的內容沿襲而來的。從 Gmail 複製的電子郵件討論串,經常在引述回覆之間夾帶雙重換行。從 Google 試算表匯出的檔案則帶有尾端的空白儲存格,在目的文件中會變成空白段落。SRT 與 VTT 等字幕檔會在時間軸中繼資料周圍插入空白列。從編輯器複製的程式碼片段與設定區塊包含刻意保留的空行,這在來源語言中有助於閱讀,放在散文中卻顯得多餘。Markdown 草稿則經常會在分節處額外加上換行,因為該格式本身就依賴這些換行。

由於上述每個來源產生空白的方式都不同,Google Docs 文件中的空隙很少是一致的。有些是真正的零長度段落,有些是只包含空格或不斷行空格的段落(來自已設定樣式的網頁),也有些是部分刪除後留下的重複列。同一份文件可能混合這三種情況,這也是為何一體適用的刪除方式經常漏掉真正需要清理的列,卻默默移除了應該保留的列。

如何在 Google Docs 中移除空行

Google Docs 本身針對此問題提供兩個內建選項。第一個是標準的「尋找並取代」對話框,可以在搜尋欄位中比對雙重換行,但無法觸及那些因包含空格或不斷行空格而看似空白的列。第二個是手動刪除,對少數空隙可行,但對於有數十個空行的文件並不實際。本機的瀏覽器工具則提供第三種選項,能在單次處理中同時處理這兩種空白,並回報實際移除了幾行、保留了幾行。在 Google Docs 中的完整工作流程非常簡單。

  1. 開啟包含要清理空行的 Google Docs 文件。
  2. 使用 Ctrl+A(macOS 為 Cmd+A)選取所有文字,然後使用 Ctrl+C 複製。
  3. 在新分頁中開啟「移除空行」工具,並將文字貼到其輸入框中。
  4. 決定是否啟用「僅含空白字元」選項(預設為啟用),或停用此選項以僅處理嚴格的零長度行。
  5. 按下處理按鈕,並檢視工具所回報的已移除與已保留行數。
  6. 從結果框中複製清理後的輸出內容。
  7. 返回 Google Docs 文件,按下 Ctrl+A 選取原始內容,然後使用 Ctrl+V 將清理後的文字貼上覆蓋。
  8. 若結果有任何異常,立即使用 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 中從字串移除標點符號 一文對此有詳細說明。