原文: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