大家在寫文件或者寫程式碼時都經常會用到換行操作,實際上我們都是使用鍵盤上的回車鍵進行換行。那麼,今天的問題來了,在按下回車鍵時系統做了哪些處理?回車鍵盤只是換行嗎?回車和換行是同一回事嗎?但實際並非完全如此。
回車鍵
這個就要從鍵盤的歷史說起了,鍵盤其實早在18世紀就已經有了,那個時候還沒有計算機,它最早是應用在打字機上,而且,打字機各種各樣相應的鍵盤也是各式各樣。後來,打字機之父克里斯托夫·拉森·肖爾斯重新設計出了打字機並規範了鍵盤,就是現在我們用的QWERTY鍵盤,他將最常用的幾個字母安置在相反方向,這樣可以放慢敲鍵速度以避免卡鍵,因為早期的機械結構的鍵盤按照字母順序排列會特別容易卡鍵。到了20世紀計算機的發明,鍵盤也作為一種基本輸入裝置被應用到計算機上。如下圖,大佬沃茲尼亞剋制作的APPLE第一代計算機,雖然主機板還是一塊裸露的電路板,但是他已經有了鍵盤作為輸入外設。
APPLE I 計算機
我們再來看看什麼是回車鍵,在打字機上有一個叫字車的部件,在打字的時候它會根據所打的字元向前移動,當移動到每一行的結尾處時,我們就不能再繼續打字下去了,這時就需要我們手動將字車推到起始位置。推字車這個動作將會發生兩種情況,一是字車歸位回到行首,二是滾筒向上滾動一行,以便可以輸入下一行。這個動作其實就是回車,後來到了電動打字機時代鍵盤上就增加一個按鍵來完成同樣的作用,這就是回車鍵的由來。
打字機
那麼,在計算機上是如何處理回車鍵的呢?關於這個問題,其實在不同的作業系統處理方法是不一樣的。在Windows上是使用\r\n兩個字元來表示,而linux是使用\n字元來表示。字元\r是將字元移動到當前的行首,對應的ASCII碼是13,也可用CR表示(Carriage Return)。字元\n是將字元移動到下一行的行首,對應的ASCII碼是10,也可用LF表示(Linefeed)。
ASCII碼錶
因此,大家在平時在Windows上建立的檔案在linux系統上開啟時,就會發現每行的結尾會多出一個^M符號,而在linux上建立的檔案在windows裡開啟,所有的內容就會顯示在一行上。
Windows建立Linux開啟
Linux建立Windows開啟