Shell腳本與vi編輯器:vi啓動與退出、工作模式、命令大全

Vi簡介

  1. Vi是一種廣泛存在於各種UNIX和Linux系統中的文本編輯程序。
  2. Vi不是排版程序,只是一個純粹的文本編輯程序。
  3. Vi是全屏幕文本編輯器,它沒有菜單,只有命令。
  4. Vi不是基於窗口的,所以,這個多用途編輯程序可以用於在任何類型的終端上編輯各式各樣的文件。
  5. Vi的功能十分強大,但是命令繁多,熟練掌握起來有一定難度。
  6. Vi的發明者:bill joy

Vi的啓動

$ Vi  filename  或者$ Vi
如果filename已經存在,Vi會打開現存文件
如果是一個新文件,Vi會創建它

Vi的退出

在命令行模式下輸入:q,:q!,:wq或者:x,可以退出Vi
:w                  保存
:w filename         另存爲filename
:wq!                保存並退出
:wq! filename       以filename爲文件名保存後退出
:q!                 不保存退出
:x                  保存並退出,功能和:wq!相同

Vi的工作模式

Vi有三種工作模式,分別爲:命令模式、插入模式(編輯模式)和末行模式,三種模式分別進行不同的操作,它們之間可以進行切換。
  1. 命令模式:進入Vi後,首先進入的就是命令模式,等待用戶輸入編輯命令,此時輸入的字母將作爲編輯命令來解釋。
  2. 插入模式:在命令模式下輸入插入命令i、附加命令a、打開命令o等命令可以進入插入模式,在插入模式下,用戶輸入可以對文本進行編輯,輸入的任何字符都被當作文件內容保存起來。【Esc】鍵可以返回命令模式。
  3. 末行模式:在命令模式下,按【:】鍵可以進入末行模式,Vi光標會顯示在窗口的最後一行,以“:”作爲末行模式的提示符,等待用戶輸入命令。末行命令執行後,Vi自動回到命令模式。

Vi命令大全

1、移動光標
h或者向左方向鍵:光標向左移動一個字符
l或者向右方向鍵:光標向右移動一個字符
k或者向上方向鍵:光標向上移動一個字符
j或者向下方向鍵:光標向下移動一個字符
【Ctrl】+f:         屏幕“向下”移動一頁,相當於【PageDown】
【Ctrl】+b:         屏幕“向上”移動一頁,相當於【PageUp】
0:                  數字0,移動到這一行的最前面一個字符處
$:                  移動到這一行的最後一個字符處
G:                  移動到這個文件的最後一行
gg:                 移動到這個文件的第一行
n【Enter】:         n是一個數字,光標向下移動n行

2、搜索與替換
/str:從光標開始,向下尋找一個名爲str的字符串。
?str:從光標開始,向上尋找一個名爲str的字符串。
:n1,n2s/str1/str2/g:n1與n2爲數字,在第n1行與n2行之間尋找str1         這個字符串,並將該字符串替換成str2

:1,$s/str1/str2/g:從第一行到最後一行尋找str1字符串,並將該字符             串替換爲str2

:1,$s/str1/str2/gc:從第一行到最後一行尋找str1字符串,並將該字                 符串替換爲str2,且在替換前提示符給用戶確認   是否需要替換

3、刪除、複製與粘貼
x,X:x爲向後刪除一個字符,X爲向前刪除一個字符
nx:n爲數字,爲連續向後刪除n個字符
dd:刪除光標所在的那一整行
ndd:n爲數字,從光標位置開始,刪除向下n列,如20dd則是刪除20列。
yy:複製光標所在的那一行
nyy:n爲數字,複製光標所在的向下n行,如20yy則是複製20行
p,P:p爲將複製的數據粘貼到光標的下一行,P則爲粘在光標的上一行。
u:復原前一個操作
【Ctrl】+r:重做上一個操作
.:小數點,重複前一個動作,常用在重複刪除、重複粘貼。

4、插入模式
i,I:插入:在當前光標所在處插入輸入文字,已存在的文字會向後    退,其中i爲從當前光標所在位置前開始插入,I將光標移到當前 行的行首,然後開始插入。

a,A:a爲從當前光標所在的下一個字符開始插入,A爲從光標所在行的 最後一個字符處開始插入

o,O:這是英文字母o的大小寫,o爲在當前光標所在的下一行插入新的 一行,O爲在當前光標所在處的上一行插入新的一行。

r,R:替換:r爲替換光標所在的那一個字符;R會一直替換光標所在的 文字,直到安下【Esc】鍵爲止。

5、文件操作相關
:w:保存文件
:w filename:另存爲filename
:n1,n2 w filename!:將n1行到n2行的內容保存到filename中
:n w filename:將第n行保存到filename中
:l,. w filename:將從第一行起到光標當前位置的內容保存到        filename中
:.,$ w filename:將從光標當前位置到文件結束的內容保存到                 filename中
:r filename:打開另外一個文件filename
:e filename:編輯新文件filename代替原有內容
:f filename:把當前文件改名爲filename
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章