1. 一般指令模式
1.1 光标的移动方法
| 按键 | 说明 |
| h 或向左方向键 |
光标向左移动一个字元 |
| j 或向下方向键 |
光标向下移动一个字元 |
| k 或向上方向键 |
光标向上移动一个字元 |
| l 或向右方向键 |
光标向右移动一个字元 |
| [ctrl]+[f] |
屏幕向下移动一页,相当于[Page Down](常用) |
| [ctrl]+[b] |
屏幕向上移动一页,相当于[Page Up](常用) |
| [ctrl]+[d] |
屏幕向下移动半页 |
| [ctrl]+[u] |
屏幕向上移动半页 |
| n+[Space] |
n 表示数字,按下数字后再按空格键,光标会向右移动到这一行的第 n 个字元。 |
| + |
光标移动到非空格行下一行 |
| - |
光标移动到非空格行上一行 |
| 功能键[Home]或 0 |
光标移动到这一行的第一个字元处 |
| 功能键[End]或 $ |
光标移动到这一行的最后一个字元处 (常用) |
| H |
光标移动到这个屏幕最上方那一行的第一个字元 |
| M |
光标移动到这个屏幕中央那一行的第一个字元 |
| L |
光标移动到这个屏幕最下方那一行的第一个字元 |
| G |
光标移动到这个档案的最后一行 (常用) |
| nG |
n 为数字。光标移动到这个档案的第 n 行 |
| gg |
光标移动到这个档案的第一行 (常用) |
| n+[Enter] |
n 为数字。光标向下移动 n 行 (常用) |
1.2 查找与替换
| 按键 | 说明 |
| /word |
在当前光标所在位置往下寻找关键字为 word 的字符串 (常用) |
| ?word |
在当前光标所在位置往上寻找关键字为 word 的字符串 |
| n |
这里的 n 是按键 n。代表重复前一个查找的操作 |
| N |
这里的 N 是按键 N。功能与 n 相反,代表反向执行前一个查找的操作 |
| :n1,n2s/word1/word2/g |
n1 与 n2 都为数字,表示行数。可在第 n1 行与第 n2 行之间寻找 word1 字符串,并替换为 word2 (常用) |
| :1,$s/word1/word2/g |
表示从第一行到最后一行,将 word1 字符串替换为 word2 (常用) |
| :1,$s/word1/word2/gc |
表示从第一行到最后一行,也是将 word1 字符串替换为 word2,不同之处是在替换前显示提示字元,由用户确认是否最终替换 (常用) |
* 使用 /word 的同时,配合使用 n 或者 N是非常有帮助的.
1.3 删除、复制以及粘贴
| 按键 | 说明 |
| x |
向后删除一个字元 (常用)相当于[del]键 |
| X |
向前删除一个字元 (常用) |
| nx |
n 为数字,表示连续向后删除 n 个字元 |
| dd |
删除光标所在的那一行 (常用) |
| ndd |
n 为数字,删除光标所在的那一行往下数 的 n 个行 (常用) |
| d1G |
删除光标所在的那行到第一行的所有数据 |
| dG |
删除光标所在的那行到最后一行的所有数据 |
| d$ |
删除光标所在处到该行的最后一个字元 |
| d0 |
是数字 0,删除光标所在处到该行的第一个字元 |
| yy |
复制光标所在的那一行 (常用) |
| nyy |
n 为数字, 复制光标所在的那一行往下数 n 行 (常用) |
| y1G |
复制光标所在行到第一行的所有数据 |
| yG |
复制光标所在行到最后一行的所有数据 |
| y0 |
复制光标所在的字元到该行行首的所有数据 |
| y$ |
复制光标所在的字元到该行行尾的所有数据 |
| p |
将已复制的数据粘贴在光标所在的那一行的下一行 (常用) |
| P |
将已复制的数据粘贴在光标所在的那一行的上一行,原来光标所在的那一行会被推后一行 (常用) |
| J |
将光标所在的行与下一行的数据合并为一行 |
| c |
重复删除多个数据 [10cj] |
| u |
撤销前一个操作 (常用) |
| [ctrl]+r |
重做上一个被撤销的操作 (常用) |
| . |
这是小数点,表示重复前一个操作 (常用) |
2 一般指令模式→编辑模式
| 按键 | 说明 |
| i |
进入插入模式;从目前光标所在处插入 |
| I |
进入插入模式;从目前光标所在行的第一个非空白字元处插入 (常用) |
| a |
进入插入模式;从目前光标所在处的下一个字元开始插入 |
| A |
进入插入模式;从目前光标所在行的最后一个字元开始插入 (常用) |
| o |
是字母,表示进入插入模式;从目前光标所在行的下一行处插入新的一行 |
| O |
是字母,表示进入插入模式;从目前光标所在行的上一行处插入新的一行 (常用) |
| r |
进入取代模式;只会取代光标所在的那个字元一次 |
| R |
进入取代模式;会一直取代光标所在的文字,直到按下 [Esc] 为止 (常用) |
| [Esc] |
从编辑模式返回到一般指令模式 (常用) |
* 在左下角处看到 INSERT 或 REPLACE 时,才表示已经进入编辑模式。
3 一般指令模式切换到指令列模式
| 按键 | 说明 |
| :w |
将编辑的文件写入硬盘 (常用) |
| :w! |
如果文件为只读状态,可以强制写入硬盘,是否写入成功,与你所拥有的文件权限有关 |
| :q |
离开 vi (常用) |
| :q! |
即使文件未保存,仍强行离开 vi |
| :wq |
文件写入硬盘后(即保存)离开 vi (常用) |
| :wq! |
文件强制写入硬盘后(即保存)离开 vi |
| ZZ |
大写字母 Z,如果文件没有修改,则直接离开;如果文件被修改,则保存后离开 |
| :w [filename] |
将当前文件另存为另一个文件,这个新文件的保存路径为当前路径 |
| :r [filename] |
在当前文件中读入另一个文件的数据,插入到当前光标所在列的后面 |
| :n1,n2 w [filename] |
将第 n1 行到第 n2 行的数据储存为新的文件 |
| :! command |
暂时离开 vi 到指令列模式下执行 command 的显示结果 |
4 vim 特有功能
4.1 区域选择
| 按键 | 说明 |
| v |
字符选择,移动光标,光标经过的地方会反白选择 |
| V |
行选择,移动光标,光标经过的行会反白选择 |
| [Ctrl]+v |
区块选择,移动光标以长方形方块的方式反白选择 |
| y |
复制反白选择的地方 |
| d |
删除反白选择的地方 |
| p |
将之前复制的区块,粘贴在光标所在处 |
4.2 多文件编辑
| 按键 | 说明 |
| :n |
编辑下一个文件 |
| :N |
编辑上一个文件 |
| :files |
列出 vim 所打开的所有文件 |
使用 vim a.txt b.txt … 指令,就能一次打开多个文件
4.3 多视窗
| 按键 | 说明 |
| :sp [filename] |
开启一个新视窗。如果有加 filename,表示是在新视窗开启一个新文件;否则,表示两个视窗为同一个文件的内容(即同步显示) |
| [ctrl]+w+向下方向键 |
先按下[ctrl]不放,然后再按下 w 后放开所有按键,最后再按下向下方向键,光标就会移动到下方的视窗 |
| [ctrl]+w+向上方向键 |
按键方法同上,光标会移动到上方的视窗 |
| [ctrl]+w+q |
关闭当前光标所在的视窗 |
4.4 补齐
| 按键 | 说明 |
| [ctrl]+x -> [ctrl]+n |
依据目前正在编辑的文件内容作为关键字,予以补齐(语法依据副档名) |
| [ctrl]+x -> [ctrl]+f |
依据当前目录下的文件名,予以补齐 |
| [ctrl]+x -> [ctrl]+o |
以副档名作为语法关键字,予以补齐 |
4.5 环境设定参数
| 按键 | 说明 |
| :set nu |
设定行号 |
| :set nonu |
取消行号 |
| :set hlsearch |
搜索到的关键字反白显示 (默认) |
| :set nohlsearch |
搜索到的关键字取消反白显示 |
| :set autoindent |
自动缩排 (默认) |
| :set noautoindent |
不自动缩排 |
| :set backup |
自动存储备份档(备份档名为 filename~) |
| :set ruler |
显示右下角状态说明 |
| :set showmode |
显示左下角状态说明(比如 INSERT) |
| :set backspace=(012) |
倒退键设置;2:可以删除任意值;0 或者 1,仅可删除刚刚输入的字符,无法删除原来就存在的字符 |
| :set all |
显示所有环境参数设定值 |
| :set |
显示与系统默认值不同的设定值 |
| :syntax on |
开启语法着色 |
| :syntax off |
关闭语法着色 |
| :set bg=dark |
开启语法着色深色方案 |
| :set bg=light |
开启语法着色浅色方案 (默认) |