若要在 Notepad++ 中排序文字,請開啟檔案,以拖曳方式精準選取您要依字母順序排列的行區塊,然後選擇 Edit › Line Operations › Sort Lines Lexicographically Ascending(或 Descending)——該選單指令會使用簡單的字元比較來重新排列所選範圍,並保持其他每一行完全不變。多數人會說「它把我的檔案弄壞了」的原因在於一個陷阱:若在沒有選取的情況下執行同一個指令,它會在無聲中對整份文件進行排序,包括您無意更動的程式碼區塊、組態鍵以及空白行。Notepad++ 沒有內建的數值排序、沒有文件化的穩定排序保證,也沒有精確的去重功能,因此像 file2, file10, file1 這樣的清單會被排成 file1, file10, file2,除非您自行將數字補齊。對於區塊明確且僅有數百行的內容,選單方式快速且可靠。對於混合欄位、數值標籤、5 萬行以上的檔案,或是任何您希望在同一次處理中保留 CRLF、刪除空白行,或移除完全重複之行的情況,專屬的瀏覽器排序工具會是更安全的下一步。

Notepad++ 的排序選單以及每個選項實際的作用
Notepad++ 在 Edit › Line Operations 下提供兩個排序指令。Sort Lines Lexicographically Ascending 使用逐位元組的字串比較將行從 A 排到 Z,而 Sort Lines Lexicographically Descending 則反轉該順序。這兩個指令都會作用於目前所選的範圍。若沒有選取範圍,則會作用於整份開啟中的檔案。它沒有數值選項、沒有大小寫切換,也沒有確認對話框,這正是為何意外的排序看起來像是無聲的損毀:一旦點擊選單項目,檔案就會立即被修改。
對於大多數一般的單字清單與標籤檔案而言,這並無問題。對於任何行的順序在語意上具有重要性的情況——YAML、INI、JSON 陣列、CSV 記錄、以空白行分隔的記錄段落,或編號過的檔名——未加防護的排序可能會讓鍵值脫離所屬段落,並破壞稍後讀取該檔案的解析器。解決方式永遠相同:先選取,再排序。
如何在 Notepad++ 中逐步排序文字
- 在 Notepad++ 中開啟檔案,並將游標移至您要依字母順序排列的第一行最前端。
- 按住 Shift 並點選您要納入的最後一行末端。選取範圍應涵蓋該區塊中的每一行,且僅限該區塊——若第一行或最後一行只被部分選取,這些行將不會被納入排序。
- 透過查看底部的狀態列來確認選取範圍;它會顯示已選取的行數與字元數。若顯示「Sel: 0 line」,則表示沒有任何反白,下一次點擊將會對整份檔案進行排序。
- 依需求開啟 Edit › Line Operations › Sort Lines Lexicographically Ascending 進行 A–Z 排序,或開啟 Sort Lines Lexicographically Descending 進行 Z–A 排序。
- 使用 Ctrl + S 儲存檔案。若您希望保留原始檔案並與排序後的版本並存,可使用 File › Save As 並指定新檔名。
- 抽樣檢查前三行與最後三行是否符合預期,並快速瀏覽中間部分,查看是否有任何章節標題或註解區塊可能被移位。
若您排序的區塊包含如 file2 與 file10 等數值前綴,請預期結果為字母順序而非數值順序。請在排序前將數字補齊為固定的位數——例如 file02、file10——或將整個工作移轉至理解自然數字順序的工具。
三個會悄悄破壞 Notepad++ 排序的陷阱
第一個陷阱是「未選取時」的規則。任何時候只要您在沒有反白任何內容的情況下點選 Sort Lines,Notepad++ 就會對整份文件進行排序,這會打亂那些行的順序原本才具有意義的程式碼與組態檔。第二個陷阱是該選單使用純粹的字串比較,因此以數字開頭的行會排在字母之前,且 file10 會排在 file2 之前。第三個陷阱是 Notepad++ 將檔案視為一組扁平的實體行序列;若您的檔案是 CSV,且單一邏輯記錄可能跨越被引號包圍的換行字元,那麼即使每一行皆被正確選取,對個別實體行進行排序仍會破壞記錄結構。
還有兩個經常出現的相關問題。排序並不保證在不同版本之間是穩定的,因此今天比較結果相同的兩行,可能會在 Notepad++ 更新後於明天交換順序;這對於計畫將排序後的輸出餵入其他工具的情況至關重要。此外,該選單不會去除重複,因此 apple 與 apple 皆會在排序後保留。若您需要移除完全重複的行並保留第一筆,請參閱適用於 Notepad++ 的重複行工作流程;若您希望將該步驟與排序本身合併執行,下文所介紹的瀏覽器工具可在單一處理中同時完成這兩件事。
將工作移轉至本機的瀏覽器排序工具
當 Notepad++ 的選單功能不足時——例如需要數值標籤、去重、大量清單,或單純想在覆寫原始檔案前先行預覽——務實的做法是複製這些行、切換到瀏覽器,並使用一款完全在本機運作的專屬文字排序工具。該工具最多接受 1,000,000 個 UTF-16 程式碼單位與 50,000 個邏輯行,可辨識 CRLF、CR 與 LF 作為行結尾,且絕不上傳任何資料。排序、修剪、移除空白行與精確去重皆為獨立切換鈕,因此您可以僅開啟實際需要的項目,並使其餘行維持原樣。
開啟該工具,從您的 Notepad++ 緩衝區貼上行行內容,再選擇升冪或降冪順序。若您的清單包含編號標籤(如 chapter1、chapter2、chapter10),請啟用自然數字順序,使 chapter2 排在 chapter10 之前。其比較採用瀏覽器的英文 Intl.Collator,這是與 JavaScript 內建的 Intl.Collator 及 Array.prototype.sort 相同的定序標準,因此只要瀏覽器版本一致,跨機器行為即具一致性且可重現。
文字排序工具的控制項一覽
| 控制項 | 功能說明 | 啟用時機 |
|---|---|---|
| 方向(升冪/降冪) | 在維持等值行穩定順序的前提下,反轉比較結果。 | 永遠選擇其中之一。降冪並非僅僅翻轉最終陣列,因此等值項目會保持原本的相對位置。 |
| 區分大小寫的比較 | 啟用時讓字母大小寫參與定序;關閉時將 Apple 與 apple 視為等價。 | 針對程式碼、識別項、標籤與密碼清單時啟用;針對自然語言單字清單時關閉。 |
| 自然數字順序 | 以數值方式比較連續數字,使 file2 勝過 file10。 | 針對檔名、章節編號、發票 ID,以及任何內嵌整數的清單時啟用。 |
| 修剪每行內容 | 在任何其他清理動作之前,先移除行首與行尾的 Unicode 空白字元。 | 當行內容來自複製貼上,且邊緣可能夾帶多餘空白或定位字元時啟用。 |
| 移除空白行 | 在可選擇的修剪動作之後,刪除內容為空的行。 | 當來源檔案中混入了空白行時啟用。請注意,僅含空格的行仍會被視為非空白,除非同時啟用修剪功能。 |
| 移除完全重複的行 | 保留首次出現的項目,並捨棄後續在 JavaScript 字串上完全等價的副本。 | 當您需要一份乾淨的唯一清單時啟用。即使在區分大小寫關閉的排序下,「Apple」與「apple」仍會被視為不同項目。 |
有一點是這些控制項無法改變的:被保留之行的字元內容。單純的排序並不會新增、刪除或改寫任何字元;修剪僅會觸及行首與行尾;去重僅會移除整行內容。輸出內容會完整呈現以供檢視,並可下載為 UTF-8 文字檔。下載的檔案將一律使用 LF 行結尾,無論來源是 CRLF、CR 或混合格式,因此在結果中混合輸入將會被統一。
挑選與您實際清單相符的選項
| 情境 | 建議選項 | 原因 |
|---|---|---|
| 大小寫混合的單字清單(例如 Apple, banana, Cherry) | 升冪、區分大小寫關閉、修剪開啟、無數值選項 | 將 Apple 與 apple 視為等價,使結果能正確分組。 |
| 編號的檔名(例如 img1.png, img10.png, img2.png) | 升冪、自然數字順序開啟、移除完全重複的行開啟 | 使 img2.png 排在 img10.png 之前,並移除任何不慎重複的副本。 |
| 因複製貼上而帶有前置空白的庫存代碼 | 修剪開啟、移除空白行開啟,然後再排序 | 修剪先執行,使僅含空白的行變為空白行,進而得以被移除。 |
| 以每行一個值的形式貼上的 CSV 欄位 | 修剪開啟、進行排序、除非確認安全否則不啟用去重 | 若任何欄位可能包含被引號包圍的換行字元,則逐行排序 CSV 並不安全;針對真正的 CSV,請使用可理解格式的表格工具。 |
| 儲存前需依字母順序排列的大型記錄段落 | 升冪、自然順序開啟、先預覽再下載 | 預覽前後數量差異,使去重造成的意外無法損毀檔案。 |
相同的輸入與選項永遠會產生相同的行序列,因為瀏覽器的定序具有確定性,且排序是穩定的,因此等價的行會保持其原本的相對順序。這使得該工具適用於可重現的產出:明天貼上相同的緩衝區、選擇相同的切換鈕,即可獲得相同的輸出。若排序後的清單將成為合約或可重現的機器產出的一部分,請再次確認英文瀏覽器的定序是否符合目的端系統的預期——定序行為可能與資料庫的 ORDER BY 行為、作業系統的檔名順序以及試算表的語言環境設定有所差異。
針對空白行與去重的情況,該工具會同時回報原始邏輯行數與最終行數,因此您所看到的差異代表由清理步驟(而非排序本身)所移除的行數。變更任何輸入或選項會立即清除舊的輸出,使先前的數量不會與新設定產生混淆。超過 1,000,000 字元或 50,000 行上限的輸入會在排序前遭到拒絕,且不會傳回部分結果;若您的檔案較大,務實的做法是在 Notepad++ 中依行數分割檔案、分別排序各個區段,然後再予以合併。