【轉】Linux 文檔編輯 : ex 命令詳解


原文:https://blog.csdn.net/yexiangCSDN/article/details/80981393

-------------------

 

ex命令用於在Ex模式下啟動vim文本編輯器。

ex執行效果如同vi -E,使用語法及參數可參照vi指令,如要從Ex模式回到普通模式,則在vim中輸入":vi"或":visual"指令即可。

語法
ex [選項][參數]
[選項][參數]
參數說明:

+數字:從文件指定的數字行開始顯示-b:使用二進制模式編輯文件-c 指令:編輯完第一個文件后執行指定的指令-d :編輯多個文件時,顯示差異部分-m :不允許修改文件-n :不使用緩存-oN:其中 N 為數字-r :列出緩存,並顯示恢復信息-R :以只讀的方式打開文件-s :不顯示任何錯誤信息-V :顯示指令的詳細執行過程--help :顯示幫助信息--version :顯示版本信息

實例
在ex 指令后輸入文件名按回車鍵后,即可進入ex 編輯模式,如編輯testfile文件,使用的命令格式如下:

<span style="color:#000000">ex testfile </span>
輸出的信息如下:

"testfile" 5L, 95C
5L, 95C
"testfile"表示文件名,5L表示5 行,95 表示字節數

進入ex 模式。輸入"visual"回到正常模式

它的操作與vim 中是一樣的,此時如果在":"后輸入"visual"后按回車鍵,將進入到vi 指令全屏界面;如果輸入"q",則退出編輯器。

 

詳解:

 

Introduction
ex是Unix下的一個文本編輯器。至於為什么突然講到這個,那是因為vi就是ex的"visual mode"。
你已經見過vi中的":w", ":q!",沒錯,這些就是來自於ex命令。
ex命令遠不止這些,實際上所有":"開頭的命令,也就是你在vi最下面看到的命令行,都屬於ex命令。
接下來我要詳細的介紹一下,ex命令的用法。

ex簡介
首先我們打開ex:


$ ex file
"file" 3L, 16C
Entering Ex mode. Type "visual" to go to Normal mode.
輸入1,3,屏幕上將顯示1-3行的內容。
試着輸入"visual"或者"vi",是不是回到了熟悉的vi界面?
想要使用ex,輸入":",是不是在最下面看到了ex命令行?
ex究竟是什么東西?事實上這和歷史有關,在早期,顯示器並不像現在這么好用,那會的“顯示器”只有按行顯示的功能。當你希望顯示某行,輸入命令,“顯示器”上才會顯示那行。試着想想一個不支持上下左右滾動的界面。
而控制這個“顯示器”顯示文本的命令行工具,就是ex。

ex vs vi
為什么我們有了vi還要使用ex?因為對於大段文本的操作,ex命令比vi命令行模式(command mode)更方便。
ex的命令都是基於行的(早期的“顯示器”,或者你的小型計算器,除了行列什么都沒有了),如:

:3:顯示第三行
:3,5:顯示第3到5行
:3s/hello/hi:將第三行的hello替換成hi,這里s是substitute的縮寫

而在vi命令行模式下,你只需要簡單的:

3G

但是對於刪除3-6行,ex命令只需要:

:3,6d:這里d是delete的縮寫

而在vi命令行模式下,你需要:

3G
3dd:這里你還需要計算6-3=3

另外一個例子,將3-6行放到14行的后面,ex命令只需要:

:3,6m14

而在vi命令行模式下,你需要:

3G
3dd
14G
pp

ex的優勢就體現在這里。

ex行
上面我們見過,ex命令都是基於行的,而獲得行號有下面幾種方法:

3:直接輸入行號
3-6:行范圍
.:當前行
/pattern/:滿足pattern的第一行
$:最后一行
%:每一行

你可以組合這些,如:

:3,$d:刪除3行到最后一行
:%d:刪掉每一行

你也可以:

:.,.+3d:刪除當前行及后面3行
:/pattern/d:刪除包含pattern的第一行
:/pattern1/,/pattern2/d:刪除從pattern1到pattern2的行

搜索
在vi中,使用/進行搜索,是不是覺得每次使用n/N來查找下一個太慢了?試試ex吧:

:g/pattern/nu

是不是所有包含pattern的行以及行號都打印出來了?這里g的意思是global,全文的意思,nu是number,行號的意思。
你也可以把g換成3,6之類的,只在3-6行中搜索。

批處理
在ex中,也可以用"|"來批處理多條命令,如:

3,6d | g/csprojectedu/nu:刪除3-6行后,打印所有包含csprojectedu的行。

保存和退出文件
在Vim實戰指南(一):基礎編輯命令中,我們介紹過保存和退出文件的方法,實際上:

ZZ:是vi命令行模式下的命令
:q:ex命令,退出文件,如果有未保存的修改則無法退出
:q!:ex命令:強制退出
:x:ex命令,保存和退出文件
:w:ex命令,保存文件
:w!:ex命令,強制保存
:w another:將文件另存為文件another
:3,6w another:將3-6行另存為文件another(編輯神器)
:9,13w >>another:將9-13行追加到文件another后面(編輯神器2)
:r another2:將another2文件的內容追到到當前文件光標后(編輯神器3)
:3r /home/user/another3:將/home/user/another3文件的內容追到到當前文件第3行后(編輯神器4)

編輯神器1-4,是不是很方便?

多文件處理
vi支持多文件處理,同時處理多文件不僅節省你多次打開和退出vi的時間,也可以讓你反復利用vi的緩存區,關於緩存區的說明見Vim實戰指南(三):高級技巧。
首先在命令行打開多個文件:


$ vi filename1 filename2
首先打開filename1,你可以通過ex的命令來切換:

:n:切換到下一個文件
:N:切換到上一個文件
:args:顯示所有文件
:rewind/:rew:跳到第一個文件
:last:跳到最后一個文件

記住,緩存區是公用的,你可以將filename1中選擇的內容,通過緩存區拷貝到filename2中。

Summary
掌握ex命令后,是不是發現vi越來越好用了?別着急,更強大更好用的ex命令還在后面。
————————————————
版權聲明:本文為CSDN博主「HarkerYX」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yexiangCSDN/article/details/80981393


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM