1.vi
与vim
的简介
可以理解为windows下面的文本编辑器,比如记事本,比如word文档
vi编辑器通常被简称为vi,而vi又是visual editor的简称
它在Linux上的地位就像Edit程序在DOS上一样
它可以执行输出、 删除、查找、替换、块操作等众多文本操作
而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的
vi编辑器并不是一个排版程序,它不像Word或wPs那样可以对字体、格式、段落等其他属性进行编排
它只是一个文本编辑程序, 没有菜单,只有命令,且命令繁多
1.修改配置文件
2.编写脚本文件
不会高亮显示语法会高亮显示语法 ✅
3.其他功能相同,取决于个人习惯是默认安装好的, vim 需要 yum install -y vim 进行安装
编辑器的三种模式
3.命令模式
命令行模式:在编辑模式下按下Esc键返回命令行模式
vi的默认模式, 在这一模式中,所有的输入被解释成vi命令
可以执行修改、复制、移动、粘贴和删除正文等命令
也可以进行移动光标、搜索字符串和退出vi的操作等
?光标移动
gg #移至文件行首
G #移至文件行尾
ngg / nG #N代表数字,配合使用移动到第 n 行
------------------
数字0 #移至行首
$ #移至行尾
------------------
5 ➡ (方向键) #向右移动5个位置
⬆ ➡ ⬇ ⬅ #其他方向同理
------------------
H #光标移至屏幕的首行行首
M #光标移至屏幕中间行行首
L #光标移至屏幕最后行行首
?删除(剪切), 复制, 粘贴
dd #删除 / 剪切, 配合p/P使用
8dd #删除 / 剪切8行 (都是当前光标所在位置)
-------------------
yy #复制
10yy #复制 10 行
-------------------
p #粘贴到当前光标所在行的下面
100p #粘贴100行
P(大写) #粘贴到当前光标所在行的上面(用法相同)
?复原和重做
u #撤销上一次操作(复原)
Ctrl + r #返回撤销上一次操作(重做)
?保存及退出
#针对于有可写权限文件
ZZ #保存退出 (没有修改的话直接退出)
Ctrl + z #直接退出,不保存修改
?查找
/[需要查找的字符] #"N"上一个, "n"下一个
/song #vim 会高亮显示, vi 不会
:/song #效果相同
?翻页
⛅滚动半屏
Ctrl + u #向下滚动
Ctrl + d #向上滚动
⛅滚动一页
Ctrl + f #向下滚动
Ctrl + b #向上滚动
4.末行模式 (扩展模式)
扩展/末行模式:输入冒号":"
在一些UNIX系统上也叫最后一行模式
在这一模式下,可以使用一些高级编辑命令,如搜寻和替代字符串、存盘或退出vi编辑器等
要进入最后一行模式,需要在命令行模式中输入冒号":"
冒号这一操作将把光标移到屏幕的最后一行。
?文件保存和退出
⛅ "!" 只是提供给管理员使用的功能
:w #保存当前的状态
:w! #强制保存
:q #退出
:q! #强制退出
:wq #保存退出
:wq! #强制保存退出
:x #保存退出
:x! #强制保存退出
?文件常用设置
:number #跳转到对应的行号
:set nu #显示行号
:set nonu #取消显示行号
---------------------
:set ic #匹配时不分大小写
:set noic #取消
---------------------
:set ai #脚本缩进
:set noai #取消缩进
---------------------
⛅以上都是临时配置,退出文件失效
vi /etc/vimrc #将以上设置写入配置文件末尾可永久配置
?查找
:/xxx #查找"xxx" "N"上一个, "n"下一个
/xxx #效果相同
?文件内容替换
⛅"%"代表所有行
⛅"///"代表分隔符, 也可以是其他种:"@@@", "###"都可以
⛅"g"代表的是从行首到行尾(左到右)
⛅"/原/新/"分隔符里面前一个是"原字符", 后一个是"新字符"
:% s/song/SONG/g #将文件所有行"song"替换成"SONG"
:2,5 s/song/SONG/g #将 2 到 5 行的"song"替换成"SONG"
:5,$ s/song/SONG/g #将 5 到 末尾行的"song"替换成"SONG"
:2 s/song/SONG/g #只将第二行的"song"替换成"SONG"
:% s/^aaa/bbb/g #只匹配以"aaa"开头的行
:% s/aaa$/bbb/g #只匹配以"aaa"结尾的行
:% s/^aaa$/bbb/g #只匹配以"aaa"的行,也就是"aaa"这一个单词
⛅在"g" 的后面加一个"i"代表不区分大小写的替换":$ s/ccc/vvv/gi"
?文件内容另存和写入
:3,5 w /root/ #将文件的 3 到 5 行写入"/root"中保存为""
:r /home/ #将"/home"下的""写入当前文件
5.编辑模式
编辑/插入模式:输入a、i、o之一
在编辑模式中,可以往一个文件中输入正文
在这一模式下,输入的每一个字符都被 vi 编辑器解释为输入的正文
使用Esc键返回命令行模式
"a" #进入插入模式并在光标之后进行添加
"i" #进入插入模式并在光标之前进行插入
"o" #进入插入模式并在当前(光标所在)行之下开启新的一行"I" #进入编辑模式,并且光标会跳转至本行的头部
"A" #进入编辑模式,将光标移动至本行的尾部
"O " #进入编辑模式,并在当前光标上添加一行空白内容
6.可视块模式
?批量去注释前提:注释的行需要整齐排列1、在命令模式,按"ctrl+v"2、上下键选中#号3、按下"dd"删除?批量加注释前提:注释的行需要整齐排列1、先将光标移动到首行的开头位置2、在命令模式,按"ctrl+v"3、上下键选中第一列4、"shift+i",然后输入#5、连续按两下"ESC"
的扩展使用方法
?环境变量临时生效与永久生效
就是上面扩展模式提到的
:number #跳转到对应的行号
:set nu #显示行号
:set nonu #取消显示行号
---------------------
:set ic #匹配时不分大小写
:set noic #取消
---------------------
:set ai #脚本缩进
:set noai #取消缩进
---------------------
⛅以上都是临时配置,退出文件失效
vi /etc/vimrc #将以上设置写入配置文件末尾可永久配置
?同时编辑多个文件
⛅"o"上下排版显示
⛅"O"左右排版显示
⛅"Ctrl + ww"进行文件切换
# vim -o
# vim -O
?对比多个文件内容
⛅"o"上下排版显示
⛅"O"左右排版显示
⛅"Ctrl + ww"进行文件切换
⛅"vimdiff"高亮显示不同之处
# vimdiff -o
# vimdiff -O
⛅"diff"显示不同之处
# diff
?patch实验
⛅就是将 1,2(有先后顺序) 两个文件对比
⛅拿到以 2(2在后面为主) 为准对比的结果
⛅通过命令 # patch [1这个文件] [以2为主的对比文件]
⛅运行命令后 [1这个文件] == [2这个文件]
patch用法详解:
?文件非正常退出
如果"ctrl+z"挂起或强制退出终端没关闭vim后
重新连接服务器会报错
vim会有一个" . [文件名] . swp"这个隐藏文件的存在
解决方法: 1.# rm -rf .[文件名].swp2.# vim -r [文件名].txt #使用"-r"选项恢复后再删除