# 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`,保存并退出。