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