一、什么是vi
可以理解为windows下面的文本编辑器,比如记事本,比如word文档。
vi编辑器通常被简称为vi,而vi又是visual editor的简称。它在Linux上的地位就像Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vi 编辑器并不是一个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。没有菜单,只有命令,且命令繁多。
vi与vim的区别:
vi不显示高亮颜色语法
vim显示高亮颜色语法。
其他功能没有什么区别。
所以在linux系统下,使用vi还是vim取决个人习惯。
默认vi是安装的 , vim需要通过yum install vim -y
或者普通模式、编辑模式、末行模式
:wq 保存并退出
:q! 强制退出不保存
:wq! 强制保存退出
:x 等同wq
:q! 强制退出
:wq! 强制写入退出
:set nu 显示行号
:数字 光标跳到数字那行
:set nonu 取消显示行号
二、命令行模式
1、命令行模式下移动光标快捷键:
$ | 光标移动到当前行尾 |
---|---|
0或^ | 光标移动到当前行头 |
gg | 光标移动到文件首行第一个字符 |
G | 光标移动到文件末尾第一个字符 |
nG | 光标移动到第n行,1G相当于gg |
H | 光标移动到屏幕最上方那一行第一个字符 |
M | 光标移动到屏幕最中间那一行第一个字符 |
L | 光标移动到屏幕最下面那一行第一个字符 |
ctl+f | 往下翻页 |
ctl+b | 往上翻页 |
2、命令行模式下删除与复制
dd | 删除光标所在那一行(可以配合p相当于剪切+粘贴) |
---|---|
ndd | 删除光标所在的向下n行,包括当前行 |
dG | 删除光标之后的所有行 |
yy | 复制光标所在那一行(换成dd,就相当于剪切) |
nyy | 复制光标及以下的n行 |
3、命令行模式下粘贴命令
p | 将已复制的行在光标下一行粘贴 |
---|---|
np | 粘贴n次 |
P | 将已复制的行在光标上一行粘贴 |
4、命令行模式下复原和重做
u | 还原前一个操作 |
---|---|
ctr+r | 重做上次操作(先有u后有ctr+r) |
5、命令行模式下的可视块
按 ctl+v
-
批量删除
命令行模式按ctl+v 或者shift+v
移动光标选择行和列
按d -
批量删除注释
命令行模式按ctl+v
移动光标选择行
按一次d -
批量增加注释
命令行模式按ctl+v
移动光标选择行
按shift+i
写入#号
连续按两下esc
6、查找想要的内容
命令行模式下,输入/name ,按回车,就会把文件中所有包含name的地方高亮显示,按n(next)自动跳下一个,按N,往上跳。
三、末行模式
:wq 保存并退出
:q! 强制退出不保存
:wq! 强制保存退出
:x 等同wq
:q! 强制退出
:wq! 强制写入退出
:x 先保存,在退出
zz 保存退出
:set nu 显示行号
:数字 光标跳到数字那行
:set nonu 取消显示行号
:w | 将文件存入/写入磁盘 |
---|---|
:q | 退出不保存 |
:wq | 退出保存 |
:q! | 强制退出 |
:wq! | 强制保存退出 |
:set nu | 显示行号 |
:8 | 光标跳到数字那行 |
:set noun | 取消显示行号 |
:set ai /:set noai | 自动缩进/取消缩进 |
:set ic / :set noic | 不区分大小写/区分大小写 |
例:将文件中的所有love改为LOVE,如果想忽略大小写,只需要在g后面加 i
1.
4、 :3,$ s/love/LOVE/g 表示第三行到最后一行
5、 :,3 s/love/LOVE/g 不指定开头就从第一行
6、 :% s/^love/LOVE/ 只换以love开头的行
7、 :% s/love$/LOVE/ 只替换以love结尾的行
8、 :1,5 w /root/a.txt # 表示把1到5行内容写入/root/a.txt下的文件内
9、 :r /root/a.txt # 把/root/a.txt文件内容读到光标所在的行后面
c. 读入文件/写文件
:w
:w /aaa.txt 另存为/aaa.txt
:1,3 w /2.txt
:1 w! /root/ccc.txt 如果目标文件已经存在则需要加!号
:r /etc/hosts
d. 设置环境
临时设置:
:set nu 设置行号
:set ic 不区分大小写
:set ai 自动缩进
:set list
:set nonu 取消设置行号
:set noic
:set paste # 取消特殊的缩进
永久的环境:
/etc/vimrc 影响所有系统用户
~/.vimrc 影响某一个用户
# vim ~/.vimrc # 在家目录下新增一个文件,输入下述内容
set ic
set nu
四、同时编辑多个文件
#1、
vim -o 文件1 文件2 # 水平分隔
vim -O 文件1 文件2 # 垂直分隔
使用ctrl + ww切换
#2、
vim -p /etc/hosts /etc/grub.conf
使用 ^PgUp, ^PgDn切换
# 相同文件之间差异对比,通常用于对比修改前后的差异。
diff #文件对比(No)
vimdiff #以vim方式打开两个文件对比,高亮显示不同的内容
# vim -O /etc/hosts /etc/grub.conf ^w 按两次切换
# vimdiff grub.conf /etc/grub.conf 对比文件,^w 按两次切换
# vim -p /etc/hosts /etc/grub.conf ^PgUp, ^PgDn
#diff -u a.txt b.txt > patch.diff # 做补丁,谁在后面就以谁为准 打补丁的意思是把要打的文件改成后面的内容
#patch a.txt patch.diff # 打补丁
2.vim执行过程
Vim非正常退出=
(1)、模拟故障: 编辑文件的时候断开连接即可(断网或断电) 重新连接服务器 再次进行编辑文件
(2)、故障报错: Found a swap file by the name “.vim.log.swp” Swap file “.vim.log.swp” already exists
(3)、故障解决: 删除临时文件或者先恢复内容再删除 使用-r选项进行恢复