初識 vi/vim 文本編輯器 1.vi 和 vim 相同,都是文本編輯器,在 vi 模式下可以查看文本,編輯文本,是 Linux 最常用的命令,vi 模式下分為三部分,第一部分一般模式,在一般模式中可以進行搜索字元等按鍵操作,按下 i,o,a任意一個字元就可以進入編輯模式,按 ESC 回到一般模式 ...
初識 vi/vim 文本編輯器
1.vi 和 vim 相同,都是文本編輯器,在 vi 模式下可以查看文本,編輯文本,是 Linux 最常用的命令,vi 模式下分為三部分,第一部分一般模式,在一般模式中可以進行搜索字元等按鍵操作,按下 i,o,a任意一個字元就可以進入編輯模式,按 ESC 回到一般模式,編輯模式下可以對文本內容進行編輯,按下 : ,/ ,?可以進入命令行模式,可以選擇按 wq 保存退出等命令操作,詳細內容如下。
vi 按鍵表
1.一般模式
游標的移動
按 鍵 |
意 義 |
h 或 ← |
游標向左移動一個字元,可跟數字組合,如10 ←或h 代表向左移動10個字元 |
j 或 ↓ |
游標向下移動一個字元,可跟數字組合 |
k 或 ↑ |
游標向上移動一個字元,可跟數字組合 |
i 或 → |
游標向右移動一個字元,可跟數字組合 |
[page up] 或 [ctrl]+b |
上一頁 |
[page down] 或 [ctrl]+f |
下一頁 |
[ctrl]+d |
向下移動半頁 |
[ctrl]+u |
向上移動半頁 |
+ |
游標移動到非空格的下一行 |
- |
游標移動到非空格的上一行 |
n+[space] |
輸入數字後按下空格代表向右移動 n 個字元 |
0 或 [Home] |
游標移動到行首 |
$ 或 [End] |
游標移動到行尾 |
H |
游標移動到屏幕顯示的第一行的第一個字元處 |
M |
游標移動到屏幕顯示的中間行的第一個字元處 |
L |
游標移動到屏幕顯示的最後一行的第一個字元處 |
G |
移動到文本的最後一行 |
n+G |
移到文本的第n行 |
gg |
移動到文本的第一行 |
n+[Enter] |
游標向下移動n 行 |
搜索操作
按 鍵 |
意 義 |
/字元串 |
向下搜索字元串 |
?字元串 |
向上搜索字元串 |
n |
向下查找符合搜索的字元 |
N |
反向查找符合搜索的字元 |
:n1,n2s/string1/string2/g |
在n1和n2之間搜索string1字元串,並將 string1替換為 string 2 |
:1,$s/string1/string2/g |
在第一行和最後一行搜索 string1字元串,並將 string1替換為 string 2 |
:1,$s/string1/string2/gc |
在第一行和最後一行搜索 string1字元串,並將 string1替換為 string 2,替換前需要客戶確認( replace with string2 (y/n/a/q/l/^E/^Y)?) |
刪除/複製/粘貼等操作
按 鍵 |
意 義 |
x 或 X |
x代表向後刪除一個字元[del],X代表向前刪除一個字元[backspace] |
nx |
向後連續刪除n個字元 |
dd |
刪除游標所在的一行 |
ndd |
刪除游標向下的n行(包括游標所在的一行) |
d1G |
刪除游標所在的一行到第一行的內容 |
dG |
刪除游標所在的一行到最後一行的內容 |
d$ |
刪除游標所在的字元到這一行的最後一個字元的內容 |
d0 |
刪除這一行的第一個字元到游標所在字元的內容 |
yy |
複製游標所在的一行 |
nyy |
複製游標所在的一行到第n行的內容 |
y1G |
複製游標所在的一行到第一行的內容 |
yG |
複製游標所在的一行到最後一行的內容 |
y0 |
複製游標所在的字元到行首的字元 |
y$ |
複製游標所在的字元到行尾的字元 |
p |
將游標在的那一行內容複製粘貼到下一行 |
P |
將游標在的那一行內容複製粘貼到上一行 |
u |
複原操作,相當於撤回 |
. |
重覆上一個操作 |
c |
重覆刪除多個數據,例如向下刪除3行[10cj] |
[ctrl]+r |
重做上一個動作 |
J |
將游標所在的一行與下一行結合 |
2.編輯模式
按 鍵 |
意 義 |
i |
進入編輯模式 |
a |
進入編輯模式 |
o |
進入編輯模式 |
r |
進入編輯模式 |
[ESB] |
退出編輯模式,進入一般模式 |
3.命令行模式
按 鍵 |
意 義 |
:w |
將編輯的數據寫入磁碟 |
:w! |
強行寫入 |
:q |
離開 |
:q! |
不保存強制離開 |
:wq |
保存並退出 |
ZZ |
如果有改動則保存退出,如果沒有改動就直接退出 |
:w[filename] |
將編輯的內容另存為 filename 文件 |
:r[filename] |
將filename的內容載入進游標後 |
:n1,n2 w[filwname] |
將n1到n2的內容保存為 filename |
:!command |
暫時回到命令模式,執行 command 命令 |
:set nu |
設置行號 |
:set nonu |
取消行號 |