linux vi 操作筆記
vi有3個模式:插入模式、命令模式、低行模式。
●插入模式:在此模式下可以輸入字元,按ESC將回到命令模式。
●命令模式:可以移動游標、刪除字元等。
●低行模式:可以儲存檔案、退出vi、設定vi、查詢等功能(低行模式也可以看作是命令模式裡的)。
一、開啟檔案、儲存、關閉檔案(vi命令模式下使用)
vi filename //開啟filename檔案
:w //儲存檔案
:w vpser.net //儲存至vpser.net檔案
:q //退出編輯器,如果檔案已修改請使用下面的命令
:q! //退出編輯器,且不儲存
:wq //退出編輯器,且儲存檔案
二、插入文字或行(vi命令模式下使用,執行下面命令後將進入插入模式,按ESC鍵可退出插入模式)
a //在當前游標位置的右邊新增文字
i //在當前游標位置的左邊新增文字
A //在當前行的末尾位置新增文字
I //在當前行的開始處新增文字(非空字元的行首)
O //在當前行的上面新建一行
o //在當前行的下面新建一行
R //替換(覆蓋)當前游標位置及後面的若干文字
J //合併游標所在行及下一行為一行(依然在命令模式)
三、移動游標(vi命令模式下使用)
1、使用上下左右方向鍵
2、命令模式下:h 向左、j 向下 、k 向上、l 向右。
空格鍵 向右、Backspace 向左、Enter 移動到下一行首、- 移動到上一行首。
四、刪除、恢復字元或行(vi命令模式下使用)
x //刪除當前字元
nx //刪除從游標開始的n個字元
dd //刪除當前行
ndd //向下刪除當前行在內的n行
u //撤銷上一步操作
U //撤銷對當前行的所有操作
五、搜尋(vi命令模式下使用)
/vpser //向光標下搜尋vpser字串
?vpser //向光標上搜索vpser字串
n //向下搜尋前一個搜素動作
N //向上搜尋前一個搜尋動作
六、跳至指定行(vi命令模式下使用)
n+ //向下跳n行
n- //向上跳n行
nG //跳到行號為n的行
G //跳至檔案的底部
七、設定行號(vi命令模式下使用)
:set nu //顯示行號
:set nonu //取消顯示行號
八、複製、貼上(vi命令模式下使用)
yy //將當前行復制到快取區,也可以用 "ayy 複製,"a 為緩衝區,a也可以替換為a到z的任意字母,可以完成多個複製任務。
nyy //將當前行向下n行復制到緩衝區,也可以用 "anyy 複製,"a 為緩衝區,a也可以替換為a到z的任意字母,可以完成多個複製任務。
yw //複製從游標開始到詞尾的字元。
nyw //複製從游標開始的n個單詞。
y^ //複製從游標到行首的內容。 VPS偵探
y$ //複製從游標到行尾的內容。
p //貼上剪下板裡的內容在游標後,如果使用了前面的自定義緩衝區,建議使用"ap 進行貼上。
P //貼上剪下板裡的內容在游標前,如果使用了前面的自定義緩衝區,建議使用"aP 進行貼上。
九、替換(vi命令模式下使用)
:s/old/new //用new替換行中首次出現的old
:s/old/new/g //用new替換行中所有的old
:n,m s/old/new/g //用new替換從n到m行裡所有的old
:%s/old/new/g //用new替換當前檔案裡所有的old
十、編輯其他檔案
:e otherfilename //編輯檔名為otherfilename的檔案。
十一、修改檔案格式
:set fileformat=unix //將檔案修改為unix格式,如win下面的文字檔案在linux下會出現^M。
總結:vi(vim)教程雖然有比較多的命令,但是隻要勤加練習,相信你會很快的熟練掌握,同時也會給你的工作或學習帶來更高的效率。當如果不知道自己處在什麼模式時可以按2次Esc鍵即可回到命令模式,會有最後提醒一點:注意大小寫!!!
1.關於退出
:wq! ----強制儲存退出
:wq ---- 儲存退出
:x ----- 作用和:wq 一樣
ZZ ---- 作用和:wq一樣,(注意Z是大寫的,並且不是在命令模式)
:q ---- 退出
:q! --- 強制退出
==============================================
2.關於移動
h : 在當前行向左移動一個字元
j: 移動到下一行
k: 移動到上一行
l: 在當前行向右移動一個字元
Ctrl +f: 向前滾動一頁
Ctrl +b: 向後滾動一頁
:n 將游標定位到第n行
:$ 將游標定位到最後一行
0 將游標定位到本行的行首
$ 將游標定位到本行的行尾
G 將游標定位到本文章的最後一行,與: $功能相同。
H 將游標定位到螢幕的頂端
M 將游標定位到螢幕的中間
L 將游標定位到螢幕的底端
============================================
3.關於搜尋
/: 後面跟要查詢的東西,在檔案中向前搜尋
?: 後面跟要查詢的東西,在檔案中向後搜尋
n: 向前重複搜尋
N: 向後重複搜尋
=============================================
4.關於複製
yy: 複製游標當前行
nyy: 複製游標當前行到當前行以下的n-1行
:1,100 co 200 將1~100的內容複製到第200行。
:100,102 co $ 將100~102行的內容複製到最後一行。
==============================================
5.關於貼上
p : 貼上到當前行的下一行
P(大) : 貼上到當前行的 上一行
==============================================
6.關於刪除.剪下
dd 刪除當前行
ndd 與nyy相似
dw 刪除一個單詞
ndw 與ndd相似
x 刪除一個字元
nx 刪除n個字元
dG 刪除當前游標到檔案末尾的所有內容。
d0 刪除當前游標到本行行首的所有內容
d$ 刪除當前游標到本行行尾的所有內容
:1,100d 刪除1~100
:100d 刪除第100行
:1,100 mo $ 將1~100行的內容移動到最後一行。
=============================================
7.關於插入
i: 在當前位置的字元前面進入插入模式
I: 在當前行的開頭進行插入
a: 在當前位置的字元後面進入插入模式
A: 在當前行的結尾進行插入
o: 在當前行下面開啟一個新行進行插入
O: 在當前行上面開啟一個新行進行插入
=============================================
8.關於撤銷
u: 撤銷上一次的更改
=============================================
9.關於替換
regexp: 是要匹配的式樣
replacement: 是要替換的字串
:s/regexp/replacement -------------------------替換當前行出現的第一個式樣
:s/regexp/replacement/g -------------------------替換當前行所有的匹配
:%s/regexp/replacement/g -----------------------替換檔案中所有匹配式樣
=============================================
PS: 還有一個重要的命令就是"." 命令,這個命令是用來重複上一命令的
vi裡如何:撤銷上次操作?,多次重複一組編輯操作?.......
a) 撤消上一個編輯操作。 ====> u
b) 重複上一個編輯操作。 =====> .
c) 還原被撤消的編輯操作。 ======> Ctrl + R
d) 多次重複一組編輯操作。 ====> ". " 命令可以重複最近一次的編輯動作.