# Vim的使用
## vim基本操作
### 移動光標
下面操作均需處在一般模式(默認的模式)下:
- `h``j``k``l`分別為“左”“下”“上”“右”
- 翻半頁:`Ctrl + d`(`d` for down),`Ctrl + u`(`u` for up)。
- 翻一頁:`Ctrl + f`(`f` for front),`Ctrl + b`(`b` for back)。
- `gg`表示移到到首行。
- `G`表示移動到尾行。
- `nG`(`n`指的是數字)表示移動到第n行;一般用于根據程序錯誤提示信息進行 bug fix。
- `0`表示移到光標所在行的行首; $表示移動到光標所在行的行尾。
### 復制剪切粘貼
- 按`yy`復制光標所在行。
- 按`dd`剪切光標所在行,如果光剪切不粘貼,那就相當于刪除。
- 按`p`將復制/剪切的內容粘貼至光標后,因為光標是在具體字符的位置上,所以實際是在該字符的后面;整行的復制粘貼在游標的下一行。
#### v模式相關
- 按`v`切換到“高亮選擇模式”,移動光標進行選擇。
- 在`v模式`下,按`y`(`y` for yank)復制高亮選擇的內容。
- 在`v模式`下,按`d`剪切高亮選擇的內容,如果光剪切不粘貼,那就相當于刪除。
### 撤銷、重做
以下僅討論vim下的操作(vi的操作稍有不同):
- 按`u`進行撤銷,可多次撤銷。
- 按`Ctrl + r`(`r` for redo)進行重做,可多次重做。
### 進入編輯模式
下面所有操作均需在一般模式下執行:
- `i`,在當前光標所在字符前插入。
- `o`,在當前光標所在行的下一行插入新的一行。
- `O`,在當前光標所在行的上一行插入新的一行。
### 查找和替換字符串
下面所有操作均需在一般模式下執行:
- `/word`,向下查找一個字符串word,查找后按`n`看下一匹配結果,按`N`看上一匹配結果。
- `?word`,向上查找一個字符串word,查找后按`n`看下一匹配結果,按`N`看上一匹配結果。
- `:n1,n2s/word1/word2/g`,在n1和n2行之間查找word1并替換為word2,其中n1、n2皆可取數字,另外n2可取$表示最后一行。
### 行號相關
- `:set nu`表示顯示行號。
- `:set nonu`表示不顯示行號。
### 保存及退出
- `:w`,保存文本。
- `:q`,退出vim。
- `:w!`,強制保存,在root用戶下,即使文本只讀也可以完成保存。
- `:q!`,強制退出,所有改動不生效。
- `:wq`,保存并退出。