基本上VI可以分为三种模式,分别是
- 命令模式 ==>输入vi命令的快捷键
- 插入模式 ==>进入编辑模式,可以编辑文件
- 底行模式 ==>调整文件内容
-不过一般情况下,我们把vi编译器简化为两个模式,就是底行模式也算如命令行模式。
基本操作
1.vi test.c
是直接用编译器打开一个文件如果文件不存在,则会自动创建。
2. vi -R test,c
一直都方式打开文件
3. 文件底层会有只读的提醒
4. 各个模式之间的切换
5. 各模式切换
低行模式 主要是对vi的设置工作,退出,查找,替换等操作
|/
esc/ / :
q q! / /
shell <======== 默认是命令行模式 没有任何提示符号,命令行模式主要进行光标移动,字符复制,粘贴,删除等操作。
x w wq wq! \ /\
a/o/i\ \ esc
/
插入模式 文本输入,主要用来编写代码,修改代码。
vi移动
0.默认支持方向键
1.向前移动:l ,空格 ,->
2.向后移动:h, <-
3.移动到下一行:+,ENTER,j,ctrl+n,方向下键
4.移动到上一行:k,-,ctrl+p,方向上键
5.移动到行首:0,^ , 在命令行模式下执行
6.移动到行尾:$
7.屏幕滚动下:CTRL + f 移动一屏,保留两行
CTRL + d 移动半屏
8.屏幕滚动上:CTRL + b 移动一屏,保留两行
CTRL+ u 移动半屏
9.定位
gg 定位到文件开头
G 定位到文件末尾
测试:
mkdir gaojic mkdir 01 cd 01
sudo cp /usr/include/stdio.h ./
3、vi编辑
以下所有操作在命令行模式执行,当进入插入模式后必须退出来才能执行以下命令
-
插入 i/I i 在光标当前插入 I 在光标行前插入
-
附加 a/A a 在光标后增加 A 在光标行后增加
-
新行 o/O o 在光标行下新起一行 O 在光标行上面新起一行
-
删除 x/X x 删除光标所在处字符 X 删除光标前面的字符,可以 nx /nX 表示删除多少个字符
-
删除行
dd/D dd
删除光标所在行 ******************
D
从光标所在位置开始到行末位
dgg
删除光标所在行到文件开头的所有数据**************
dG
删除光标所在行到文件末尾的所有数据**************
u
用来插销刚才的操作 ***************
6)剪贴与粘贴: 剪贴有缓冲区9个,类似压栈方式存储。每次复制一次都是放到第一个缓冲区
dd
剪贴一行
p
粘贴一行 ***************
“2p
粘贴2号缓冲区数据 “3p“
粘贴3号缓冲区数据
7)复制与粘贴: yy p
********************
以下都是底行模式操作:
8)复制与移动: 底行模式下执行
:开始行,结束行 co 目标行
例如 :1,2 co 5 把第一行到第二行复制到第五行
:开始行,结束行 m 目标行
例如: :1,2 m 5 把第一行到第二行移动到第五行
7)移动到指定行: :行号 行号G ===>底行模式执行 ***********
4、vi查找与替换
1) 查找 在命令模式使用 “/” 在其后直接写需要查询的
关键字 然后 回车 ==》n/N 来查询
n 表示从光标处开始往下找
N 表示从光标处开始往上找
/<xx> 表示严格匹配查找 xx 字符
/<printf> 在当前文档中严格匹配查找单词printf
//在低行模式下执行
2) 替换 :g/s1/s//s2/g *********
将文件中所有的s1字符串都替换成s2,
s1和s2可以使字母也可以是字符串
eg: :g/printf/s//PRINTF/g
将当前文档中所有的小写printf全部替换成大写的printf
5、其他常用操作
vi 撤销 u 撤销刚才的操作
vi 重复 . 重复刚才的动作
vi 挂起 ctrl+z
vi 恢复 fg
vi 跳转 gd 将光标移动到你要跳转的变量或者函数上,
在执行gd即可跳转到定义处
[I 将光标移动到你的查找的变量或者函数上,
执行[I即可查找到相关头文件和当前文件中的
调用信息
vi 关键字补齐 ctrl+n 在编写代码过程中先写一部分
单词再按下ctrl+n 则能看到补全信息
vi 自动缩进 “=” 在命令行模式执行 = 完成缩进,
可以鼠标全选后 = 来整体缩进
按下 v 字符 移动方向键选中区域在按 = 完成排版
ggvG 可以全选当前文档,在按 = 完成排版
=============================================================================================================
小技巧:
按V 进入可视模式,v 可以选定任意个字符,V 是行选定。
进入可视模式后可以用方向键来选择区域,然后按下y 可以复制,d 可以剪贴
再用p就可以粘贴
在可视模式下选择任意区域后,按下 = 可以自动代码缩进。
在光标移动到括号上的时候 ,按下 % 可以找到对应的
另一个括号
可以vi xx xx xxx 多文件编辑,在底行输入
e xx 可以文件切换 ,或者在底行输入 : n :N 来回切换
:sp(:vsp) 文件名 vim 将分割出一个横(纵)向窗口,
并在该窗口中打开新文件.
各个窗口之间切换用ctrl+w 看光标在切换
:set diff 此命令用于比较两个文件是否一样
:vsp filename
命令打开另一个文件, 然后在每个文件
窗口中输入此命令,就能看到效果了.
:set nodiff 可以讲不同之后的颜色去掉。
:shell 可以在不关闭vi的情况下切换到
shell命令行
:exit 从shell回到vi
文件退出: 在底行模式执行
shift + zz 可以自动保存文件并退出
当前编辑环境
: wq 保存退出
: q 不保存退出
: x 保存退出
: wq! 强制保存退出
: q! 强制不保存退出
: wq /home/linux/xxx.c 指定位置保存文件
ctrl+shift+ + 放大
ctrl+ - 缩小