跳至主要內容
YIP NEWS
YIP NEWS
生活 美食生活

10月19日 刊出

食譜纔寫到第三行,爐子上那鍋就被提前端走了

V2EX 網友貼文到終端機被莫名換行截斷的疑案,被翻譯成廚房裡食譜被提前端上桌的滋味故事。

刊出 (台北時間) 閱讀約 4 分鐘

2026 年 10 月 18 日晚間,V2EX 上有位網友發文問了一個困擾他很久的問題:在 Windows 電腦上,把寫好的十來行文字貼進 Claude CLI、Codex CLI、Kimi Code CLI 這類終端機工具時,偶爾會有某一行被一個「不存在的硬回車」攔腰截斷,前半段直接被送了出去。他換過 UltraEdit、Windows 記事本、EmEditor,開過「顯示所有符號」檢查,看不見任何多餘的控制字元,同一份檔案裡的另一篇內容卻怎麼貼都沒事。樓下有人回覆指向 CR 與 LF 換行符的轉換差異,也有人貼出 Codex 在 GitHub 上懸宕已久的相關 issue。

這是工程師的煩惱,但讀著讀著,你可能會覺得這場景有點熟。

一張食譜,最怕的就是斷在半句話上

你應該也收過那種靠通訊軟體傳來的食譜。長輩打的、朋友語音轉文字的,一行一行:「五花肉切厚片」、「冷水下鍋加薑」、「煮滾撈浮沫」。這種食譜的好用之處在於它像口頭交代,你邊看邊做,節奏跟手上的鍋鏟對得上。

麻煩也剛好在這裡。只要其中一行的結尾被截斷,後面的指令就全變了意思。「煮滾撈浮沫然後轉小火燉四十分鐘」如果只送到「煮滾撈浮沫」就停住,而你以為指令到此為止,蓋上鍋蓋關火走人,四十分鐘後開鍋,那鍋肉是硬的,湯是清湯寡水的。錯的往往不是手藝,是那條在你我看不見的地方偷跑進去的換行。

那位網友的困擾正是如此。他檢查了源頭,文字乾乾淨淨;換了編輯器,問題照舊;換一篇內容貼,又完全正常。斷行的位置落在第三行尾,有時是中文字,有時是標點,找不出規律。這像極了那種「同一張食譜我媽照著做就好喫、我照著做就走味」的家庭懸案,材料一樣、步驟一樣,差別藏在某個你沒看見的環節,可能是爐子的火力、鍋的厚薄,也可能只是一句話沒交代完。

看不見的換行,看不見的火候

回文裡最有意思的一則解釋是:Ctrl+Shift+V 這種貼法是「 cooked input」,程式要等一整行輸入完才看得到那一行,貼十行等於送出十次,每一行結束後,程式自己決定要做什麼。換句話說,斷不斷,不是文字本身說了算,是接收端的「脾氣」說了算。

廚房裡到處都是這種事。同一把青菜,大火快炒三十秒起鍋是脆的,多待十秒就塌了。食譜上的文字沒變,變的是爐子怎麼「讀」它。我後來學會看家裡長輩做菜,與其抄下她說的每一句話,不如站在旁邊看她什麼時候出手、什麼時候停。口述食譜的換行符從來不在紙上,在她的手勢裡。

這也讓人想起我們先前聊過的廚房裡的時鐘與火候故事:偷喫的人改時鐘,掌握火候的人改的不是時間,是自己對時間的感覺。文字被斷行,很多時候也是同一回事,問題從來不在那行字,在讀它的那個端。

給被迫 ESC 重來的人,也給做菜做到一半的人

原 po 後來自己回了帖,說遇到這種情況,他的辦法是按 ESC,再把下半段內容重貼一次。「這樣就很掃興了。」他說。

掃興,是的。就像滷汁燒到一半發現少放了八角,得撈出來補、再放回去,味道最後是對的,但那段手忙腳亂已經把做菜的從容喫掉了大半。

不過工程師的土辦法,往往跟廚房裡的土辦法一樣有用:回文裡有人建議把編輯器的「顯示所有符號」打開,親眼看看每行結尾到底藏的是什麼。這動作在廚房裡有個對應版本,嚐一口再調味。看不見的時候別急著下判斷,先想辦法讓它現形,哪怕只現形一次。

至於那個在 GitHub 上掛了很久的 issue 何時會修,沒有人知道。但下一餐照樣要做,下一篇要貼的文字照樣要貼。被截斷的那半句,就當成爐子上的一個提醒:指令送到哪裡,從來由接收端決定,做菜的人能做的,是把每一行都寫得就算斷了,也斷得下去。

在圍著同一鍋喫飯這件事上,我們先前也從孩子願意開口喫飯的那個晚上聊過類似的道理:一張桌子能不能把話接完整,比誰先開口重要。食譜如此,終端機如此,家裡的餐桌大概也是如此。