原本準備寫一篇VI的學習筆記,看了一半發現得先寫一篇關於EX行編輯器的學習筆記,vi是更底層的ex行編輯器的可視模式,不少ex的命令在vi中也很好用編輯器
ex的命令行以:開始,而後接各類命令,ex的命令行中包含了行地址以及命令,| 能夠在一行中分割多個命令學習
p 表明打印,例如:2p 表示打印第二行,其實p也能夠省略,多行顯示在兩個行號之間用逗號分隔開便可。沒有行號的命令只會對當前行起做用,在ex編輯器中輸入:vi便可進入vi編輯器,大寫Q可退出ex編輯器。spa
一些常見的操做在vi中有更方便的命令,當須要一次更改多行時,ex命令更有用,d 表示刪除一行,m 表示移動一行,t表示複製一行。命令行
每個ex編輯命令都要知道要操做的行號,移動和複製還須要目的地,能夠明確指定行號,也能夠用符號指定相對於當前的行號,或者標示某些行的搜索模式做爲地址。
例如:6,9d 刪除6-9行
:6,9m15 將6-9行移動打15行以後
:set nu 可讓文件內容顯示行號
:5,10# 以#結尾標示只顯示5-10行的行號。
:= 顯示文件總行數
也能夠用符號表示行地址:
. 表示當前行 :.,10m$ 將當前行到20行移動到文件末尾
$ 文件最後一行 :5,$d 從第五行刪除至文件末尾
% 文件的每一行
+/- 放到行號前面時表示在行號上加上或者減去後面的數值
用搜索模式匹配行:
:/xxx/d 刪除下一個包含xxx的行
:/xxx/,/yyy/d 刪除從第一個包含xxx到第一個包含yyy的行
全局搜索:g
全局搜索是搜索並顯示全部包含模式的行
:g/xxx/p 搜索全文中的xxx並打印出來
:5,10g/yyy/p 搜索5-10行的yyy並打印出來
:w 緩衝區內容寫入文件中,不離開文件
:q 離開文件,緩衝區內容不寫入文件
:wq 緩衝區內容寫入文件並離開文件
:x 寫入文件並離開(文件被修改過纔會寫入)
:w newfile 將編輯過的文件另存爲爲newfile
:x,yw newfile 另存爲x-y行的內容爲newfile
在已經打開的文件中讀入其餘文件:
:xr newfile 把newfile的內容插入x行的下面,沒有x的話就是光標的下一行
在一個文件中打開另外一個文件:
:e newfile 在打開另外一個文件前先必須保存當前文件
% 表示當前文件 #表示上一個切換來的文件 這樣能夠快速切換
全局替換,模式支持正則
:g/xxx/s/yyy/zzz/g 匹配包含xxx的行,把其中的yyy替換成zzz
:%/xxx/s/yyy/zzz/g 同上it
因爲之前接觸正則,因此後半部分寫的不是很詳細。file