vi是linux内置的文书编辑器,而vim可以称为是vi的进阶版,可以说程序编辑器。
vi一共三种模式:
- 一般指令模式
- 编辑模式
- 指令列命令模式
下面记录了一些关于vi的常用按键功能,加粗部分为常用的命令
一般指令模式
移动光标的方法 | |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
[Ctrl] + [f] | 屏幕【向下】移动一页,相当于【Page Down】按键 |
[Ctrl] + [b] | 屏幕【向下】移动一页,相当于【Page Down】按键 |
[Ctrl] + [d] | 屏幕【向下】移动一页,相当于【Page Down】按键 |
[Ctrl] + [u] | 屏幕【向下】移动一页,相当于【Page Down】按键 |
+ | 光标移动到非空格符的下一列 |
- | 光标移动到非空格符的上一列 |
n<space> | 按下数字,然后再按空格键,光标会向右移动n个字符 |
0 或功能键【Home】 | 移动到行的最前面 |
$ 或功能键【End】 | 移动到行的最后面 |
H | 光标移动到这个屏幕的第一行的第一个字符 |
M | 光标移动到这个屏幕的中间行的第一个字符 |
L | 光标移动到这个屏幕的最后一行的第一个字符 |
G | 移动到这个文件的最后一行 |
nG | 移动到第n行(配合 :set nu) |
gg | 相当于 1G |
n | 光标移动到第n行 |
查找与替换
查找与替换 | |
---|---|
/word | 向光标之下寻找word的字符串 |
?word | 向光标之上寻找word字符串 |
n | 重复前一个查找动作,向下查询 |
N | 重复前一个查找动作,向上查询 |
:n1,n2s/word1/word2/g | 在n1-n2行之间,用word2替换word1 |
:1,$s/word1/word2/g | 从第一列至最后一列寻找word1,用word2替换 |
:1,$s/word1/word2/gc | 从第一列至最后一列寻找word1,用word2替换,并提示给用户确认 |
删除、复制与粘贴
删除、复制与粘贴 | |
---|---|
x,X | x为向后删除一个字符(del); X为向前删除一个字符(backspace) |
nx | 连续向后删除n个字符 |
dd | 删除游标所在一行 |
ndd | 删除n行 |
d1G | 删除光标所在行到第一行的所有数据 |
dG | 删除光标后的所有数据 |
yy | 复制游标所在的行 |
nyy | 复制游标所在的向下n行 |
y1G | 复制光标所在行到第一行的所有数据 |
yG | 复制光标所在行到最后一行的所有数据 |
p,P | 粘贴; p光标后粘贴;P光标前粘贴 |
J | 光标所在列与下一列合并成同一列 |
u | 复原前一个动作 |
[Ctrl] + r | 重做上一个动作 |
. | 重复上一个动作 |
编辑模式
进入插入或替换的编辑模式 | |
---|---|
i, I | i 为从目前光标所在处插入 I 为在目前所在列的第一个非空格符处开始插入 |
a, A | a 从目前光标所在的下一个字符出开始插入 A 从光标所在列的最后一个字符处开始插入 |
o, O | o 在目前光标所在的下一列处插入新的一列 O 在目前光标所在处的上一列插入新的一列 |
r, R | r 只会取代光标所在的那一字符一次 R 会一直取代光标所在的文字,知道按下ESC为止 |
[Esc] | 退出编辑模式,回到一般指令模式中 |
指令列模式
指令列模式的存储、退出等指令 | |
---|---|
:w | 将编辑的数据写入硬盘文件中 |
:w! | 文件【只读】时,强制写入该文件。还得看你对文件的权限 |
:q | 退出 |
:q! | 强制退出 |
:wq | 保存后退出,加!为强制 |
ZZ | 文件没改动,则不存储离开;如改动,则存储后离开 |
:w [ filename] | 将编辑的数据存储成另一个文件 |
vim环境的变更
vim环境的变更 | |
---|---|
:set nu | 显示行号 |
:set nonu | 取消行号 |