操作指令
具体内容
h或向左箭头(←)
光标向左移动1个字符
j或向下箭头(↓)
光标向下移动1个字符
k或向上箭头(↑)
光标向上移动1个字符
l或向右箭头(→)
光标向右移动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字段
向下重复上一个查询字段
向上重复上一个查询字段
: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
向后删除一个字符
向前删除一个字符
dd
删除当前行
ndd
向下删除n行
d1g
删除光标所在到第一行数据
dg
删除光标所在到最后一行数据
d$
删除光标所在到本行的最后一个字符
d0
删除光标所在到本行的第一个字符
yy
复制当前行
nyy
向下复制n行
y1g
复制光标所在行到第一行的所有数据
yg
复制光标所在行到最后一行的所有数据
y0
复制光标到本行行首的所有数据
y$
复制光标到本行行尾的所有数据
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 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
实现串口间的切换
其中,水平分割的示意图如下所示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI5kjMzIjMxgTM5AzMwYTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
垂直分割的示意图如下所示: