Linux終端上的行編輯器 ed
導讀 | 如果你正在使用 或者 BSD 的話,你很可能已經預設安裝了 ed(在 Linux 上是 GNU 版 ed,而在 BSD 上是 BSD 版 ed)。但是,一些極簡的環境可能沒有包括 ed,這也沒關係,你的發行版的軟體倉庫中很可能有 ed 可供下載。macOS 預設安裝了 BSD 版 ed。 |
這個看似簡單的編輯器為使用者提供了許多易於學習和使用的 。
GNU ed 是一個行編輯器。它被認為是標準的 Unix 文字編輯器,因為它是首個出現在 Unix 的文字編輯器,並且它曾經無處不在,你在任何一個 POSIX 系統中都能找到它(通常來說,你現在也可以)。在某種程度上,你可以很容易看出來它是第一個文字編輯器,因為它在許多方面的功能都十分基礎。和其他大多數的文字編輯器不同,它不會開啟一個屬於自己的視窗或顯示區域,事實上,在預設情況下,它甚至不會提示使用者輸入文字。從另一個方面來說,它在互動功能上的缺失也可以成為一個優點。它是一個多功能的編輯器,你可以用簡短的命令控制它,無論是在互動式的命令列中,還是在編寫的 裡。
如果你正在使用 Linux 或者 BSD 的話,你很可能已經預設安裝了 ed(在 Linux 上是 GNU 版 ed,而在 BSD 上是 BSD 版 ed)。但是,一些極簡的環境可能沒有包括 ed,這也沒關係,你的發行版的軟體倉庫中很可能有 ed 可供下載。macOS 預設安裝了 BSD 版 ed。
當你啟動 ed 的時候,你的終端提示符不見了,看起來好像是 ed 停止執行了。其實它沒有,它只是在等待你輸入指令而已。
$ ed
為使 ed 顯示更詳細的資訊,你可以輸入命令 p 讓它返回一個提示符:
$ ed p ?
這個問號(?)是預設的 ed 提示符。
當 ed 啟用時,你其實是在和一個叫 緩衝區buffer 的東西打交道。緩衝區是記憶體中的一塊區域。你並不會直接編輯檔案,而是在編輯它對應的緩衝區。當你退出 ed 卻沒有把修改儲存到磁碟的檔案上時,所有的修改都會丟失,因為它們只在緩衝區裡存在。(這對於一個已經習慣了初始的 草圖緩衝區scratch buffer 的資深 Emacs 使用者可能很耳熟。)
啟動 ed 後,你處於命令模式。這意味著你可以向編輯器傳送指令,比如讓它顯示一個提示符,而不是空白區域。你可以使用 a 命令開始附加文字到當前的緩衝區,使用一個實心的點 . 來終止輸入。比如,下面的這個例子往緩衝區裡附加了兩行文字(“hello world” 和 “hello ed”):
? a hello world hello ed .
使用點 . 終止輸入後,你將回到命令模式。
怎樣檢視當前緩衝區裡都有什麼呢?你可以輸入想要檢視的行號,也可以使用 ,p 命令來顯示所有的行:
? 1 hello world 2 hello ed ,p hello world hello ed
如果你現在對文字很滿意,你可以使用 w 命令把緩衝區寫入到檔案中,後面跟上目標檔名:
? w example.txt 19
寫操作後顯示的那個數字代表著寫入到檔案中的字元數。
除了使用 ed 來讀取文字,你也可以使用 r 命令把一個已經存在的檔案載入到到緩衝區裡:
? r myfile.txt
另外,你也可以在啟動 ed 時,在它後面加上你想要載入到緩衝區裡的檔名:
$ ed myfile.txt
鑑於 ed 是一個文字編輯器,你當然可以使用一種特殊的語法來編輯緩衝區裡的文字。使用 sed 或 vim 的使用者或許會覺得這個語法很熟悉。假設現在緩衝區裡已經載入了一個檔案:
$ ed myfile.txt ,p This is an example document. There is some text, but not much. There is some errors, but not much.
如果你要把第一句話中的 document 修改為 file,你可以先選擇目標行(1),然後使用 s 命令呼叫搜尋函式,後面跟著搜尋文字和替換文字:
? 1 This is an example document. s/document/file/ 1 This is an example file.
如果你要編輯其他行,步驟也是一樣的,只需提供一個不同的行號即可:
? 3 There is some errors, but not much. s/is/are/ s/much/many/
你可以使用 ,p 命令來看到你對緩衝區的歷史編輯記錄:
This is an example file. There is some text, but not much. There are some errors, but not many.
當然,這些修改只存在於緩衝區裡。你如果在 ed 編輯器外檢視這個檔案,你只會看到原始的文字:
$ cat myfile.txt This is an example document. There is some text, but not much. There is some errors, but not much.
如果你要把這些修改儲存迴檔案中,使用 w 命令即可:
w myfile.txt 258
如果想要得到一個新的緩衝區,以此來開啟一個新的檔案,或者把一個新的檔案載入到不同的環境中,你可以使用 c 命令。使用這個清空緩衝區後,什麼也不會輸出,因為緩衝已經是空的了:
c ,p
如果要退出當前的 ed 會話,你可以使用 q 命令。它並不會給你一個儲存緩衝區的機會,所以你要確保自己在這之前執行了儲存操作。
ed 還可以做到很多事情,學習 ed 可以讓你知道它和部分的 vim 是如何工作的。我並沒有嘗試使用 ed 來寫這篇文章,老實說,我也不認為它是通常意義上的最佳文字編輯器。但是,ed 仍然是一個出色的編輯器。透過閱讀它的文件,你可以很輕鬆地學會它。在 GNU 系統上,你可以使用 info ed 來檢視它的操作手冊。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2888017/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux 終端上的漂亮小馬Linux
- Linux 終端中使用 nano 編輯器技巧LinuxNaN
- linux編輯器Linux
- Linux/Unix 桌面趣事:終端上的聖誕樹Linux
- LINUX VIM編輯器Linux
- 在linux的終端上執行sqlplus時,沒有回顯功能LinuxSQL
- macOS 終端可用的 Hex 檢視與編輯器Mac
- Linux文字編輯器JedLinux
- Linux 退出Vi編輯器Linux
- Linux 常見編輯器Linux
- linux中vi編輯器的使用Linux
- Linux下的編輯器――vi大全(轉)Linux
- Linux系統中的Vim編輯器Linux
- Linux編輯器Vim簡介Linux
- Linux精講——vim編輯器Linux
- 在 Linux 終端上偽造一個好萊塢黑客的螢幕Linux黑客
- 在 Linux 的終端上偽造一個好萊塢黑客的螢幕Linux黑客
- Linux 命令列下的最佳文字編輯器Linux命令列
- linux命令之vi文字編輯器Linux
- linux下vi編輯器命令大全Linux
- [HTML編輯器]C#編寫的HTML編輯器:原理篇HTMLC#
- 支援行級同步滾動的 markdown 編輯器
- Linux 上最好的十六進位制編輯器Linux
- 5 款 Linux 下免費的 CSS 編輯器LinuxCSS
- 一個愚蠢的極客把戲:在linux終端上看電影Linux
- Linux– 檔案編輯器 vi/vim(1)Linux
- Linux編輯器vim鍵盤詳解Linux
- 公式編輯器公式
- vim編輯器
- HTML 編輯器HTML
- 【必備工具】Linux常用的文字編輯器有哪些?Linux
- Linux系列開坑記(二)-神的編輯器VimLinux
- 安利一款很棒的Linux程式碼編輯器Linux
- Linux系統下常用的文字編輯器有哪些?Linux
- Unity 編輯器現已正式面向 Linux 推出UnityLinux
- linux用什麼編輯器寫python?LinuxPython
- Linux 筆記分享五:VIM 文字編輯器Linux筆記
- Linux平臺 Luola 地圖編輯器(轉)Linux地圖