一、vi/vim 的工作模式
- 命令模式(normal mode)
- 輸入模式(insert mode)
- 轉義模式
二、進入和退出
進入vim
vim newFile
退出vim
:wq
– 把編輯緩衝區的內容寫到指定的文件中, 退出編輯器, 回到shell狀態:ZZ
– 僅當對所編輯的內容進行過修改時, 纔將緩衝區的內容寫入文件中:x
– 與 :ZZ 的功能相同:q!
– 強制退出vi, 感嘆號(!)告訴vi, 無條件退出, 放棄緩衝區的內容。
三、文本輸入
1. 插入命令
命令 | 效果 |
---|---|
i |
在i命令輸入後, 輸入的內容都插在光標位置之前, 光標後的文本相應向右移動 |
I |
輸入I命令之後, 在當前行的行首插入新增文本, 光標移動到行首 |
2. 附加命令
命令 | 效果 |
---|---|
a |
在光標後開始插入字符 |
A |
在當前行的行尾添加文本, 輸入A命令後, 光標自動移動到該行行尾 |
3. 打開命令
命令 | 效果 |
---|---|
o |
在當前行的下面開闢一行, 隨後輸入的文本就插入該行上 |
O |
在當前行的上面開闢一行, 隨後輸入的內容就插入該行上 |
4. 輸入模式下光標的移動
四、光標移動
命令 | 效果 |
---|---|
0 | 將光標移動到當前行的第一個字符, 不管它是否爲空白字符 |
^ | 將光標移到當前行的第一個非空白符上(非製表符或非空格符) |
$ | 將光標移到當前行的行尾, 停在最後一個字符上。如果在它前面輸入了一個數字n, 則光標移動到下面n-1行的行尾, 如8$. |
[行號]G | 將光標移至指定行號的行首, 如3G, 則將光標移至第三行行首 |
[列號]| | 將光標移至當前行指定列上 |
w/W | 將光標移至下一個詞的開頭 |
b/B | 將光標退到前一個詞的開頭 |
e/E | 將光標移至詞尾 |
( / ) | ( 和 ) 分別將光標移至上一個和下一個句子的開頭 |
L | 將光標移至底行 |
4組基本移動光標命令:
五、文本修改
在命令模式下, 使用相關命令對文本進行修改。
命令 | 效果 |
---|---|
x | 刪除光標所在字符,如果前面給出一個數值n, 則由光標所在字符開始, 向右刪除n個字符, 如, 5x |
X | 刪除光標前面的那個字符。 如果前面給出數值n, 則由光標之前的那個字符開始, 向左刪除n個字符 |
dd | 刪除光標所在行 |
d… | d與光標移動命令(以…表示)組合而成的命令就從光標位置開始刪到由光標移動限定的文本對象的末尾。 |
D | 從光標位置開始刪除到行尾 |
u | 復原命令, 取消剛纔的插入或刪除命令 |
. | 重複命令。僅重複實現最近一次的命令, 而不能執行更早的命令 |
J | 文本合併命令, 把當前行與下面一行合併成一行。 如果在J之前給出一個數字, 如3J, 表示把當前行以及後面兩行合併成一行 |
命令 | 效果 |
---|---|
s | s命令用隨後輸入的正文替代光標所在的字符。 如果在s前面給出一個數字, 如 5s, 則光標所在字符及其後的4個字符將被新輸入的字符替換 |
S | S 命令用新輸入的正文替代當前行。如3S, 表示從當前行開始的三行被新輸入的正文替換。 |
命令 | 效果 |
---|---|
r | 取代命令。 用隨後輸入的單個字符取代光標所在字符。 如果在r前面出現數字, 如3rA, 則從光標位開始向右共有3個字符被新輸入的字符替換。 |
R | 用隨後輸入的文本取代光標位所在字符, 每輸入一個字符就替代原有的一個字符。 |