1. 程式人生 > 其它 >vi編輯器的使用

vi編輯器的使用

vi編輯器

vi是一個命令,也是一個命令列下的編輯器,它有如下功能:

a. 開啟檔案、新建檔案、儲存檔案

b. 游標移動

c. 文字編輯

d. (多行間|多列間)複製、貼上、刪除

e. 查詢和替換

很多人不習慣在命令列下編輯檔案,實際開發中也不會經常在命令列下編輯檔案。但是在Linux系統中對檔案做些簡單修改時,使用vi命令的效率非常高。並且在很多時候,比如現場除錯時,並沒有GUI形式的編輯工具,vi是唯一選擇。

1. 模式

vi編輯器有三種模式,各個模式側重點不一樣:

a. 一般模式(游標移動、複製、貼上、刪除)

b. 編輯模式(編輯文字)

c. 命令列模式(查詢和替換)

vi編輯器的三種模式間切換如下圖所示

注意:

a. 當不知道處於何種模式時,按ESC鍵返回到一般模式。

b. wq(write quit)

c. i(insert)

2. 檔案的開啟、新建、儲存

開啟檔案、新建檔案,命令如下(如果檔案存在則開啟檔案,否則新建檔案並開啟):

$ vi  檔名

修改結束之後,輸入“:” 進入命令列模式,再輸入“wq”儲存退出:

:wq    儲存並退出檔案

注意:如果檔案不存在,也需要輸入“:wq”才可以儲存新檔案,否則不會新建檔案。

在編輯完成時,返回一般模式,方法如下:

a. 輸入“:w”則儲存檔案,如果已經儲存檔案,輸入“:q”則退出檔案

b. 直接輸入“:wq”儲存並退出

c. 如果不想儲存被修改的內容,則輸入“:q!”強制退出

這些命令列表如下:

命令

描述

x

儲存當前文件並且退出。

q

退出。

w

儲存文件 。

q!

退出 vi/vim,不儲存文件。

 

3. 編輯檔案

開啟檔案後,預設處於“一般模式”,這時可以輸入以下字母:

指令

描述

i

在當前游標所在字元的前面,轉為編輯模式。

I

在當前游標所在行的行首轉換為編輯模式。

a

在當前游標所在字元的後面,轉為編輯模式。

A

在游標所在行的行尾,轉換為編輯模式。

o

在當前游標所在行的下方,新建一行,並轉為編輯模式。

O

在當前游標所在行的上方,新建一行,並轉為編輯模式。

 4. 快速移動游標

在一般模式下,可以使用下面快捷鍵移動游標或是翻頁:

移動游標

h (或左方向鍵)

游標左移一個字元。

l (或右方向鍵)

游標右移一個字元。

j (或下方向鍵)

游標下移一行。

k (或上方向鍵)

游標上移一行。

nG或ngg

游標移動到第 n行首。

n+

游標下移 n行。

n-

游標上移 n行。

螢幕翻滾

Ctrl + f

螢幕向下翻一頁,相當於下一頁。

Ctrl + b

螢幕向上翻一頁,相當於上一頁。

 

詳細介紹如下:

1)快速的定位到某一行:檔案頭、檔案尾、指定某一行

ngg  //游標移至第n行的行首(n為數字,想要跳轉的行),

1gg  //就跳到第一行的行首,就是檔案頭

2gg  //就跳到第二行的行首

G    //轉至檔案結尾

2)在某一行如何快速定位到某一列:

0   //(數字零)游標移至當前行行首

$   //游標移至當前行行末

fx  //搜尋當前行中下一個出現字母x的地方

注意:當你不知道vi當前處於何種模式時,使用esc鍵返回到一般模式。

 

5. 文字複製、貼上、刪除、撤銷

在一般模式下,可以執行以下命令。

複製、刪除和貼上

cc

刪除整行,並且修改整行內容。

dd

刪除該行,不提供修改功能。

ndd

刪除當前行向下 n行。

x

刪除游標所在的字元。

X

刪除游標前面的一個字元。

nyy

複製當前行及其下面 n行。

p

貼上最近複製的內容。

s

刪除游標所在字元。

r

替換游標處字元。

 

1) 複製

yy   //複製當前行(y:yank(複製))  

nyy  //複製當前行及其後的n-1行(n是數字)

2) 貼上

p  //貼上(p:paste)

3) 刪除

dd   //刪除游標所在行(d:delete)

ndd  //刪除當前行及其後的n-1行(n是數字)

x    //刪除游標所在位置的字元 

4) 撤銷

u  //撤銷上一步操作

 

6. 文字查詢和替換

在一般模式下,可以執行以下命令。

1) 查詢

/pattern  //從游標開始處向檔案尾搜尋pattern,後按下n或N

注意

n         在同一個方向重複上一次搜尋命令

N         在反方向重複上一次搜尋命令

注意

在/pattern之前先跳到第一行則進行全檔案搜尋。

2) 替換

:%s/p1/p2/g   //將檔案中所有的p1均用p2替換

:%s/p1/p2/gc  //替換時需要確認

“s“ 全稱:substitute替換;

“g“ 全稱:global全域性;

“c“ 全稱:confirm,確認

參考https://www.runoob.com/linux/linux-command-manual.html