光标移动
操作指令 | 具体内容 |
h或向左箭头(←) |
光标向左移动1个字符 |
j或向下箭头(↓) |
光标向下移动1个字符 |
k或向上箭头(↑) |
光标向上移动1个字符 |
l或向右箭头(→) |
光标向右移动1个字符 |
h或向左箭头(←) |
光标向左移动1个字符 |
|
对以上,若在指令前输入n则移动n位,如30j则表示向下移动30行 |
[ctrl]+[f] |
向下移动一页 |
[ctrl]+[b] |
向上移动一页 |
[ctrl]+[d] |
向下移动半页 |
[ctrl]+[u] |
向上移动半页 |
+ |
光标移动到非空格的下一列 |
- |
光标移动到非空格的上一列 |
n |
向右移动n位 |
0或功能键[HOME] |
移动到这一行的最前面 |
$或功能键[END] |
移动到这一行的最后面 |
H |
移动到第一行第一个字符 |
G或L |
移动到最后一行 |
M |
移动到中间一行 |
nG或 :n |
移动到第n行 |
gg |
移动到第一行 |
搜寻和替代
操作指令 | 具体内容 |
/word |
向下查询word字段 |
?word |
向上查询word字段 |
n |
向下重复上一个查询字段 |
N |
向上重复上一个查询字段 |
:s/old/new/ |
将当前行第一个old字段替换为new字段 |
:s/old/new/g |
将当前行所有old字段替换为new字段 |
:n,$s/old/new |
将第n行开始,到最后一行中的每一行的第一个old字段替换成new字段 |
:n,$s/old/new/g |
将从第n行开始,到最后一行中每一行的所有old字段替换成new字段 |
若n为.表示从当前行开始替换 |
|
:%s/old/new/ 等同于 :g/old/s//new/ |
替换每一行的第一个 old 为 new |
:%s/old/new/g 等同于 :g/old/s//new/g |
替换每一行中所有 old 为 new |
:n1,n2s/old/new/g |
将n1到n2行中所有的old字段替换成new字段 |
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ) |
/oradata/apras/替换成/user01/apras1/ |
:s#vivian/#sky/#使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符 |
替换当前行第一个 vivian/ 为 sky/ |
删除、复制和粘贴
操作指令 | 具体内容 |
x |
向后删除一个字符 |
X |
向前删除一个字符 |
dd |
删除当前行 |
ndd |
向下删除n行 |
d1G |
删除光标所在到第一行数据 |
dG |
删除光标所在到最后一行数据 |
d$ |
删除光标所在到本行的最后一个字符 |
d0 |
删除光标所在到本行的第一个字符 |
yy |
复制当前行 |
nyy |
向下复制n行 |
y1G |
复制光标所在行到第一行的所有数据 |
yG |
复制光标所在行到最后一行的所有数据 |
y0 |
复制光标到本行行首的所有数据 |
y$ |
复制光标到本行行尾的所有数据 |
p |
将复制数据粘贴在光标的下一行 |
P |
将复制数据粘贴在光标的上一行 |
J |
将光标所在行和下一行数据合成一行 |
u |
复原上一个动作 |
[ctrl]+r |
重做上一次动作 |
其他常用操作
操作指令 | 具体内容 |
:w |
将编辑的数据储存成另一个档案(类似另存新档) |
:n1,n2 w [filename] |
将 n1 到 n2 的内容储存成 filename 这个档案。 |
:! command |
暂时离开 vi 到指令列模式下执行 command 的显示结果,如:! ls ~ |
: r !command |
将command命令的执行结果插入到文本当前行的下一行 |
: 3 !command |
将文本中第三行的内容输入到命令command中进行处理,并将第三行的内容替换为命令的执行结果 |
:1,3 !command |
将文本中第一行到第三行的内容输入到命令command中进行处理,并将第一行到第三行的内容替换为命令的执行结果 |
:3 w !command |
将文本中第三行的内容输入到命令command中进行处理,不改变当前编辑文件的内容. |
:1,3 w !command |
将文本中第一行到第三行的内容输入到命令command中进行处理,不改变当前编辑文件的内容 |
:shell |
切换到shell,此时vim在后台运行,在shell中输入命令exit,切换回vim |
多文件编辑
操作指令 | 具体内容 |
vim filename1 filename2 |
同一个窗口显示多个文件(打开后暂时只显示filename1的内容 |
:n |
切换到下一个文件 |
:N |
切换到上一个文件 |
:n filename2 |
切换到文件filename2 |
:ls |
列出vim打开的所有文件的信息,包括文件名,buffer id等 |
:b2 |
切换到buffer id为2的buffer |
:bn |
切换到当前buffer的下一个buffer |
:bp |
切换当前buffer的前一个buffer |
:bd |
关闭当前buffer,对应文件也随之关闭 |
:bd2 |
关闭buffer id为2的buffer,对应文件也随之关闭 |
:e file |
打开新文件,但不会分割窗口 |
:sp file |
打开新文件,并且将会水平分割窗口 |
:vsp file |
打开新文件,并且将会垂直分割窗口 |
分割窗口,显示多个文件
操作指令 | 具体内容 |
vim -o filename1 filename2 |
水平分割窗口 |
vim -O filename1 filename2 |
垂直分割窗口 |
[ctrl] + ww |
实现串口间的切换 |
其中,水平分割的示意图如下所示:
垂直分割的示意图如下所示: