4.1 VI 和 VIM 两种文本编辑器
命令模式:快捷键操作,可用于跳转,复制,粘贴,删除等等
插入模式:对文件进行编辑
末行模式:用作保存退出或者编辑环境
vi和vim
vi 和 vim 都是 Linux 中最常用的、最基本的、CLI命令行环境中的文本编辑器,类似于Windows的记事本。
区别:
vi编辑器 :是UNIX早期自带的文本编辑器,更简单,不支持语法颜色。
vim编辑器 :是在 vi 基础上的改进版本,比 vi 功能更强大,支持语法颜色。
vim 是 vi 的升级版,如未安装,则安装方法是:yum install vim -y
vim 有颜色 ,在编辑文件内容时候很容易看出来格式是否有误,如果错误颜色会直接改变
4.2 VI 和 VIM 的工作模式
4.2.1 掌握三种模式切换
插入-----------命令-----------末行
命令模式 按 i,a,o 大小写进入插入模式
插入模式 按 ESC 退到命令模式
命令模式 按 :进入末行模式
末行模式 按 ESC 退到命令模式
4.2.2 各模式具体功能
模式名称 | 模式功能 |
---|---|
(1) 命令模式 | 该模式负责实现:一些快捷的编辑操作,也是模式切换的中枢。 打开vi编辑器,就默认处于命令模式。 例如:dd删除行、yy复制行、p粘贴、u撤消 … 等等 快捷操作。 |
(2) 插入模式 | 该模式负责实现:最主要的编辑功能。 例如:常规的文本录入及编辑修改。 |
(3) 末行模式 | 该模式负责执行:一些特定的管理操作。 例如:w保存、q退出、set设置、/查询 … 等等 管理操作。 |
4.3 vi vim的常用指令
终端 Ctrl + R 搜索模式
命令模式:
i ## 当前字符之前插入 (光标前) 最常用,因为本来就是在光标前编辑
I 行首插入 (行首)
a 当前字符之后插入 (光标后)
A 行尾插入(行尾)
o 下一行插入 (另起一行) 一般在最后新的一行写内容时候,光标移到最后一行按 o
O 上一行插入(上一行插入)
hjkl 左下上右移动光标
gg 定位到第一行的行首 相当于1gg
ngg ## 定位到第n行的行首 比如10gg定位到第 10行
G 定位到最后一行的行首
yy 复制当前行 相当于1yy
nyy 从当前行开始往下一共复制n行 比如3yy是从当前行往下一共复制三行(包括当前行三行)
dd 剪切
ndd ## 当前行往下剪切一共n行
p ## 当前行往下一行粘贴
P(大写) 当前行往上一行粘贴
u ## 撤销
Ctrl + r ## 反撤销
/ ## 开启搜索模式 n向下搜索, N向上搜索、
? 开启搜索模式,从下往上搜索
/bin 搜索bin 会发亮
/\/bin 搜索 /bin 当搜索的内容有特殊符号 比如/ 时候,要使用转义字符 \ 进行转义
先gg在dG 删除所有内容
0 或 ^ 跳到当前行行首
$ 跳到当前行行尾
Ctrl + v 进入可视化,作用很大
Shift + zz 保存退出
Ctrl + v 进入可视化后
可视化之后通过 hjkl 或者 方向键 进行上下左右 选中几行几列的矩形里面内容 进行操作
s 删除选中的内容,删除之后会自动进入插入模式
比如我要给5行到第100行变成注释内容 每一行前面加 # 即可
命令模式下光标移到第五行行首
Ctrl + v ## 进入可视化 方向键拉到第100行 即第5到第100行的首字母光标发亮
Shift + i ## 直接进入插入模式
输入# esc返回退回命令模式即可
插入模式:进行编辑
末行模式:
w 保存
q 退出
wq! 强制保存并退出
q! 强制退出
set nu 显示行号
set nonumber 隐藏行号
r 把别的文件内容复制粘贴过来 比如 :r 1.txt 就是把1.txt里面的内容粘贴到本文件
syntax on 启动高亮显示 默认是显示,vim 独有功能,通过颜色更好让人判断写的内容格式是否有误
syntax off 隐藏高亮显示,和vi一样显示
set syn=normal 隐藏高亮显示
set list 显示文本格式控制符 默认是隐藏 比如会在文件行尾多了一个 $ 符号
set nolist 隐藏文本格式控制符
s/// s### s@@@ s||| 这几个都是关键字替换功能,用法一样
s/11111/22222/ 将光标的所在行的第一个11111替换成22222
s/老的/新的/g 将老的替换成新的
s/老的/新的/g 将光标所在行的关键字全部进行替换
%s/老的/新的/ 将全文的第一个关键字进行替换
%s/老的/新的/g 将全文的关键字进行替换 s/// 可用上面的代替
%s#/sbin#root#g 将全部的 /sbin 替换成 root
4.4 恢复VI和VIM编辑的文本文件
★ 问题情况1:当异常关闭vi编辑器,从而造成一部分数据尚未正常的保存,会遗留<.xxx.swp临时交换文件> 比如突然关机
★ 问题情况2:同时多个vi编辑器来编辑相同的文件,从而造成冲突,会遗留<.xxx.swp临时交换文件>
解决办法 :我们可以重新vim 该文件 然后会显示存在 .原文件名.swp 隐藏文件 如下图所示
我们存在文件 passwd 但是修改途中发生意外没有保存就被中止退出 再次 vim passwd 得到下图
我们可以 通过 r 恢复进入到修改过后但没保存的内容 也可以通过 e 进入到修改之前的内容 或q退出 a中止
不过无论是 r 还是e 我们得到自己想要的文件后,还需要删除隐藏的交换文件(.passwd.swp),否则每次vim 该文件时候都会出现这个情况
当然我们可用通过如下命令快速恢复
vi -r passwd ## 第一步:恢复修改没保存的数据
rm -rf .passwd.swp ## 第二步:删除swp交换文件