介绍常用命令,vi有太多命令,但是感觉很大一部分很冗余,所以记住下面的一小部分足够用了,多多使用
文件操作
命令 | 描述 |
---|
vi filename | 打开或新建文件,并将光标置于第一行首 |
vi filename….filename | 打开多个文件,依次进行编辑 |
:w | 保存当前文件 |
:q | 退出vi |
:q! | 不保存文件,强制退出 |
文本编辑
插入文本
命令 | 描述 |
---|
i | 在当前字符前插入文本 |
o | 在当前行后面插入一空行 |
删除文本
命令 | 描述 |
---|
x | 删除光标后的字符 |
ndd | 删除n行 |
:a,bd | 删除a到b行文本 |
do、d$ | 删至行首、删至行尾 |
ndw | 删除光标处开始及其后的n-1个字 |
复制粘贴文本
命令 | 描述 |
---|
yy | 将一行文本移到缺省缓冲区中 |
yn | 将下一个词移到缺省缓冲区中 |
ynw | 将后面的n个词移到缺省缓冲区中 |
p | 粘贴缺省缓冲区到这一行、粘贴到光标的右边 |
取消操作
替换文本
命令 | 描述 |
---|
:s/p1/p2/g | 将当前行中所有p1均用p2替代 |
:n1,n2s/p1/p2/g | 将第n1至n2行中所有p1均用p2替代 |
:g/p1/s//p2/g | 将文件中所有p1均用p2替换 |
光标移动
移动光标类命令
命令 | 描述 |
---|
k、j、h、l | 上、下、左、右光标移动命令,键盘的方向键具有同样的作用,所以一般这个命令很少使用 |
nG、:n | n为行数,该命令立即使光标跳到指定行 |
G | 移到最后一行 |
Ctrl-f、Ctrl-b | 向前、后翻整页 |
Ctrl+u、Ctrl+d | 向前、后翻半页 |
0(数字0)、$ | 光标移至当前行首、行尾,我常用上箭头来代替0,和正则一样 |
Ctrl+G | 光标所在位置的行数和列数报告 |
w、b | 使光标向前或向后跳过一个单词 |
搜索命令
命令 | 描述 |
---|
/string | 查找字符串string |
n | 在同一方向重复上一次搜索命令 |
N | 在反方向上重复上一次搜索命令 |
例子
1.同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中。
—- vi file1 file2
—- yy 在文件1的光标处拷贝所在行
—- :n 切换到文件2 (n=next)
—- p 在文件2的光标所在处粘贴所拷贝的行
—- :n 切换回文件1