Linux04--Vim文本编辑器
1 vi/vim编辑器介绍
# vi/vim编辑器:用来修改文件
vi : 同记事本一样
vim : vim是vi的升级版 (如:颜色)
# 格式: vim [选项(非必须)] [被修改的文件的路径]
# 选项:
-r : 继续输入 # 可以把上次退出时没有保存的内容读出来,继续编写
1.1 vi/vim的三种模式
# 命令模式:进入修改文件的第一个模式,主要功能都是使用各种快捷键
# 末行模式:对文本进行处理,例如:替换
# 编辑模式:修改文件内容
1.2 三种模式的关系
1.3 vi/vim编辑器的原理
1.vi xxx.txt # 检查.xxx.txt.swp是否存在
2.读取xxx.txt的内容
3.会自动创建一个名为.xxx.txt.swp的隐藏临时文件
4.修改文件 # 修改.xxx.txt.swp文件
5.保存文件 # .xxx.txt.swp文件存入xxx.txt中
6.退出编辑 # 删除.xxx.txt.swp文件
==============Vim非正常退出时===============
1 模拟故障:
编辑文件的时候断开连接即可(断网或断电),重新连接服务器,再次进行编辑文件
2 故障报错:
Found a swap file by the name ".vim.log.swp"
Swap file ".vim.log.swp" already exists
3 故障解决:
删除临时文件 或者 先恢复内容再删除 使用vim -r a.txt -r选项进行恢复
2 vi/vim编辑指令
所有模式适用:上下左右键:控制光标的位置
2.1 命令模式
: (shift + :) 进入末行模式
i :进入编辑模式 # 在光标之前输入 insert的缩写
a :进入编辑模式 # 在光标之后输入 append的缩写
o :进入编辑模式 # 在光标所在位置另起一行输入
esc : 退出末行/编辑模式,回到命令模式
gg :跳转到首行 行首
G :跳转到末行 行首
H :移动到屏幕的开头
L :移动到屏幕的结尾
M :移动到屏幕的中间
0 :从光标所在位置跳转到当前行 行首
$ :从光标所在位置跳转到当前行 行尾
u :撤销上一步 # 类似于windows中的ctrl+z
dd :删除当前行
ndd:在光标所在位置向下删除n行 # n 是具体的行数
D :从当前行的光标所在位置删除到行末
yy :复制光标所在行
nyy:在光标所在位置向下复制n行 # n 是具体的行数
p :粘贴到光标的下一行 # 小写
P :粘贴到光标的上一行 # 大写
x :删除光标当前字符,向后删除 # 小写 与del键一样
X :删除光标当前字符,向前删除 # 大写
# 查找内容:
向下查找:/要查找的内容,按n下一个,按N上一个
向上查找:?要查找的内容
2.2 末行模式
### 1 保存退出
:n : 直接跳转到第n行
:w : 保存
:q : 退出编辑
:wq : 保存并退出
:x : 保存并退出
:q! : 强制退出 # 不保存退出
! : 强制执行的意思 # 指令参数,必须跟在指令后面
### 2 查找替换
格式: :范围 s/old/new/选项 # 中间的分隔符是 / # @ 都可以
:作用开始的行号,作用结束的行号 s#[被修改的内容]#[修改的内容]#[g]
# 范围中的符号
$ 表示最后一行
% 表示全文、代表的是文本所有行
# 选项中的符号
g 表示全局 # 因为默认的查找替换,是只查找到每行的第一个,若同行后面还有,就不会替换,则需要最后加上 g
i 表示忽略大小写 # 可与 g 一起使用
# 被修改内容中的符号 ==> 正则表达式
^ 表示以什么开头
$ 表示以什么结尾
# eg:将文件中的man替换为MAN
:0,410 s#man#MAN#g
:0,$ s#man#MAN#g
:% s#man#MAN#g
:1,5 s/Note/yyy/ # 从1-5行的第一个 Note 替换为yyy
:5,$ s/Note/yyy/ # $表示最后一行
:4,9 s/^#// # 4-9行的 以#开头的替换为空
:% s#/dev/sda#/var/ccc#g # 把全文 /dev/sda 替换成 /var/ccc
:,8 s/to/xxx/ # 从当前行到第8行
### 3 读入文件/写文件
:w /aaa.txt # 相当于把当前文件另存为/aaa.txt
:1,3 w /2.txt # 把1-3行 复制写入到 /2.txt中
:1 w! /root/ccc.txt # 把1 强制复制写入到 //root/ccc.txt
如果目标文件已经存在则需要加!号
:r /etc/hosts # 将/etc/hosts文件的内容,复制读取到 当前光标的下一行
### 4 设置环境
# 临时设置
:set nu : 显示行号 # nu number的缩写
:set nonu : 取消行号
:set ic : 不区分大小写 # 命令模式下的 /字符串 查找 以及 编辑模式的 查找替换,就不会区分大小写了
:set noic : 区分大小写 # 默认
:set ai : 自动缩进
:set list : 显示不可见的字符 eg 换行符
# 永久设置环境: 修改vim的配置
/etc/vimrc 影响所有系统用户
~/.vimrc 影响某一个用户
# vim ~/.vimrc # 在家目录下新增一个文件,输入下述内容
set ic
set nu
2.3 编辑模式
ctrl + v : 进入可视化编辑模式,允许多行批量操作
# 案例:
# 1.Vim同时注释多行
1.Ctrl + v进入块选择模式
2.向上或向下移动光标选择多行
3.移动光标到行的起始位置
4.然后按大写的 I 进入行首插入模式
5.插入注释符
6.按Esc回到命令模式
# 2.Vim同时删除多行注释
1.Ctrl + v 进入块选择模式
2.向上或向下移动光标,选择要删除的注释符号
3.按d键删除
2.4 编辑多个文件与文件内容对比
### 1 同时编辑多个文件
vim -o 文件1 文件2 # 垂直排列
vim -O 文件1 文件2 # 水平排列
使用 ctrl + ww 切换
### 2 文件内容对比
# 相同文件之间差异对比,通常用于对比修改前后的差异。
vimdiff # 以vim方式打开两个文件对比,高亮显示不同的内容
# eg:
vimdiff a.txt b.txt # 也可进入到 编辑中 a i o 以及 ctrl + ww 切换
diff # 文件对比
# eg:
diff a.txt b.txt # 命令行中 显示两个文件的不同
[root@hecs-147737 ~]$ diff a.txt b.txt
1c1 # 第一行的不同
< 1111 # 左边文件的内容
---
> 111 # 右边文件的内容
3,4c3,4 # 第三、四行的不同
< 333333
<
---
> 3333333
> 444444444444444
3 安装vim编辑器
1.进入/etc/yum.repos.d目录
cd /etc/yum.repos.d
2.删除所有的文件
rm -rf ./*
3.编辑CentOS-Base.repo
vi CentOS-Base.repo
[base]
name="Hello World"
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/
gpgcheck=0
4.安装
yum install vim -y
https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/Packages/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通