第五章 介紹ex編輯器
可以用空格來分隔行地址、模式、命令
首先利用ex打開文件
ex filename
查看文件的第一行:
1p 或者 1
打印文件的1到3行:
1,3
替換命令:(將當前行中的a全部替換成為A)
s/a/A/g
如果當前行是第9行,那么如下的命令可以達到同樣的效果
9s/a/A/g
命令 :vi 可以從ex轉換到vi中
在vi命令模式下, Q 命令可調用ex,在ex中的任何時刻,命令 vi 可使你返回到vi編輯器
:10,16d[elete] ????刪除10到16行的內容
定義行的范圍
使用明確數字的地址稱為絕對行地址
:3,18d ????????刪除3~18行
:160,224m23 ????移動160~224行到23行的下面(如同vi中的delete和put)
:23,29co100 ????復制23~29行并把它們粘貼到100行的后面(如同vi中的yank和put)
:set nu 是 :set number的縮寫,相反的命令是:
:set nonu 和:set nonumber
:1,10# ????暫時的顯示部分行的行號
:= ????顯示總行數
:.= ????顯示當前行的行號
:/pattern/= ????顯示第一個與模式相匹配的行的行號
行地址符???? 點(.) 代表當前行; $ 代表文件的最后一行; % 代表文件中的每一行,等同于 1,$
:.,$d???? ????刪除從當前行(包括)到最后一行(包括)之間的文本
:20,.m$ ????把從20行到當前行的文本移動到文件的結尾
:%d???? ????刪除文件中的所有行
:%t$???? ????復制所有行并把它們粘貼到文件的尾部(成為連續的副本)
使用 +- 指定一個相對當前行的地址
;.,.+20d ????刪除從當前行開始向下的20行
:226,$m.-2 ????把226行到文件末尾的文本移動到當前行上面的第二行
:,+20# ????????顯示從當前行到下面20行的行號
:-,+t0 ????????復制前后,當前三行到文章的開頭(就是虛構的第0行的后面)
搜索模式
ex定位行的另一種方法是使用搜索模式
:/pattern/d ????刪除下一個(從當前行開始搜索)包含模式pattern的行
:/pattern/+d ????刪除下一個(從當前行開始搜索)包含模式pattern的下一行
:/pattern1/,/pattern2/d ????將從 第一個 包含模式1的行到 第一個 包含模式2的行之間的內容刪除(有可能這個范圍是負的)
:.,/pattern/m23???? ????將從當前行(.)到第一個包含模式pattern的行之間的文本移動到23行的后面
:100;+5 p???? ????從100行到105行 (注意分號)
全局搜索
:g/pattern ????????尋找 所有的 pattern模式,并停止到最后一個
:g/pattern/p ????尋找并顯示文件中所有包含模式pattern的行
:g!/pattern/nu ????????尋找并顯示文件中所有不包含模式pattern的行,同時還顯示這些行的行號
:60,124g/pattern/p ????尋找并顯示第60到124行之間所有包含模式pattern的行
組合ex命令
:1,3 d | s/their/their/ ????????把一到三行刪除;然后再當前行(該行是調用ex提示符以前的第4行)進行替換
:1,5 m 10 | g/pattern/nu ????把第一行到第五行移動到第10行的后面,然后顯示所有包含模式pattern的行(和行號)
保存和退出文件
vi保存退出命令 ZZ
:w ????把緩沖區寫到文件中
:q ????退出編輯器
:wq ????寫文件并退出編輯器,即使沒有修改文件,寫操作也會無條件的進行
:x ????如果修改了文件就寫文件,退出,如果沒有修改文件就直接退出
加上感嘆號就強制執行前面的操作(前提是能夠有辦法執行)
重命名緩沖區
可以使用 :w 將整個緩沖區保存到新文件中
:w filename.new
保存部分文件
:230,$w newfile ????將從第230行到文件末尾的文本保存到newfile中
:.,600w newfile ????將從當前行到第600行的文本保存到newfile中
添加到現有文件中
:340,$w >>newfile ????將緩沖區從340到尾部的內容保存到newfile的尾部
把文件復制到另一個文件中
:r[ead] filename ????將filename文件的內容插入到本文件中光標位置的后面
:185r /xxx/filename ????????將filename文件插入到本文件中第185行后面,另外還有
:$r data
:0r data
:/pattern/r data
編輯多個文件
調用vi打開多個文件
vi file1 file2 ????打開兩個文件,并顯示出第一個文件
:ar[gs] ????????查看當前打開文件,方括號括起當前選擇的文件
:rew[ind] ????????把當前文件重新設置為命令行上指定的第一個文件
:last ????????????把當前文件設置為命令行上指定的最后一個文件
:e file ????????可以在vi中新打開file文件
在打開兩個文件的時候%代表當前文件名字符串,#代表備用文件名字符串
:e! ????放棄編輯操作并返回到當前文件上次保存過的版本
^^ 等同于 :e#
在文件之間進行編輯
方法一跟單文件相同,僅僅是切換文件的區別,方法二
:160,224ya a ????將第160行到224行復制到緩沖區a中,接下來使用:e移動到想放置的文件,輸入 :pu a 就復制過去了,注意這個a緩沖區就是"a緩沖區
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
