vim的常用状态:命令状态和编辑状态
在命令状态下,所键入的字符系统均作命令来处理
在编辑状态下,进行编辑文字代码
当刚进入vim时,会先进入命令状态。在命令状态下,按 i 或者a 可以进入编辑状态,在编辑状态,按ESC键进入命令状态。
在命令状态下:
//新增
a 从光标后面开始添加文本
A 从光标所在行的末尾开始添加文本
//插入
i 从光标前面开始插入文本
I 从光标所在行的开始处插入文本
//删除与修改
x 删除光标处的字符
dd 删除光标所在的整行
[n]dd 删除光标所在行以及下面的n行
D或d$ 删除光标到行尾的文本,常用于删除注释语句
yy 复制光标所在的整行
[n]yy 从光标开始往下复制n行
p 将复制后的文本粘贴到光标处
u 撤销上次操作
//光标移动
^ 光标移动到行首
$ 光标移动到行尾
ctrl+f 向下翻一页
ctrl+b 向上翻一页
gg 光标定位到文件头
G 光标定位到文件尾
H 光标定义到当前页首
L 光标定位到当前页的最后一行行首
w 光标向后移动一个字
b 光标往前移动一个字
[n]+ 光标向后移动n行
[n]- 光标向前移动n行
[n]G 光标定位到第n行行首
//查找与替换
/[str]
//str表示要查找的字符串,命令n移动到下一个找到的字符串,命令N移动到上一个找到的字符串
:s/[src]/[dst]
//部分替换,只能替换光标所在行,i/忽略大小写 g/全部匹配 eg:s/hello/word/ig
:3,6 s/[src]/[dst]/ig
//(3-6)行查找替换
:%s/[src]/[dst]/g 将文档中所有src的字符串替换为dst字符串
:%s/^//g 将文档每一行的行首空格去掉
//块操作
v 可视化选择状态,选中块之后,可以对块进行删除(d),复制(y),剪切(x)
ctrl+v 竖向选择模式,主要用于批量注释代码:
1、首先按ctrl+v,竖选选中要注释的行
2、输入I,然后输入//
3、再输入esc,就会看到选中的行被注释了
//文档的保存以及退出
:q 在未修改文档的情况下退出
:q! 放弃文档的修改,强行退出
:w 文档存盘
:wq 文档存盘退出
:%!xxd 以十六进制模式查看
:%!xxd -r 返回文本模式
在编辑过程中按ctrl+s,vim处于停止运行状态,可以按ctrl+q恢复
:new test.c //表示再打开一个vim,横向的
:vnew test.c 表示纵向,也可以通过sp和vsp命令实现
:ctrl+w+w 两个窗口之间切换
命令模式输入gg=G,自动对齐操作
sed 管道查找替换程序,批量替换命令
cat a.txt|sed 's/aa/bb/' > b.txt
//将a.txt中的aa替换成bb并重定向输出到b.txt中
sed "s/printf/puts/g" main.c //在main.c中不会生效,必须加-i参数
sed -i "s/printf/puts/g" main.c
若在不同文件夹中进行批量替换
find . -name "*.c" | xargs sed -i "s/printf/puts/g"
对比两个文件是否相同
vimdiff main1.c /usr/main2.c