一、vim三种工作模式
命令模式
插入模式
退出模式
二、命令模式下的各类操作
1.配置vim工作方式
1)临时设定
命令模式是vim打开文件后默认进入的模式,这个模式中不能插入字符,但是可以设定vim的工作方式
:set nu ##添加行号
:set nonu ##取消编号
:set cursorline ##下划线
:set mouse=a ##添加鼠标选择
注意:在vim中直接设定vim的工作方式是临时设定,也就是说当vim关闭,设定失效
2)永久设定
如果要永久设定需要root用户编写"/etc/vimrc".这个文件也是vim的配置文件
#永久设定
vim /etc/vimrc
set nu
set mouse=a
set cursorline
2.在命令模式下如何管理字符
按"x" ##删除光标所在字符
按“p“ ##粘贴
按"u" ##undo 恢复
按"ctrl+r" ##redo 撤销恢复
按"y" ##复制
"yw" ##复制一个单词
“y5w”##复制五个单词
"yl" ##复制一个字母
"y3l"##复制三个字母
"yy" ##复制一整行
"y5y" ##复制5行
按"c" ##剪切
"cw" ##剪掉一个单词
"cl" ##剪掉一个字母
"cc" ##剪掉一整行
"c5c" ##剪掉5行
注意:
用C做剪切时,会进入插入模式,如果要粘贴,需要退出插入模式。按<ESC>再按P
按"d" ##删除
"dw" ##删除一个单词
"dl" ##删除一个字母
"dd" ##删除一整行
"d5d" ##删除5行
3.vim的可视化模式
在可视模式下可以区域选择字符
ctrl+v ###进入可视化模式
按"上|下|左|右"移动光标选择区域,按相应操作键就可以对选择区域进行操作
注意:在命令模式下;不可用鼠标选择
批量添加字符:
step1: 把光标停留在想要加入字符所在的列的第一行
step2: 移动光标选择添加字符所在列
step3: "I"进入插入模式
step4: 写入要插入的字符
step5: "ESC"退出插入模式,字符批量添加成功
4.批量字符替换
:%s/源字符/替换后字符 ##每一行出现的第一个关键字
:%s/源字符/替换后字符/g ##全文替换,s所有行,g表示所有列
:3,5s/源字符/替换后字符/g ##替换第三行到第五行的关键字
:/lp/,/halt/s/sbin/hello/g ##lp字符和halt字符之间的所有关键字
5.光标移动及字符搜索
1)光标移动
:数字 ##光标移动到指定的行
<HOME> ##光标移动到行首
<END> ##光标移动到行尾
G ##光标移动到最后一行
gg ##光标移动到第一行
2)字符查找
/关键字
按“n“ #向下匹配
按“N“ #向上匹配
6.在vim中编写多个文件
vim file #打开一个文件
:sp filename #打开另一文件
ctrl+w 上|下|左|右 ###光标在窗口之间的移动
三、插入模式下操作
i ##光标所在位置插入
I ##光标所在行的行首插入
A ##光标所在行行尾插入
a ##光标所在字符的下个字符插入
s ##删除光标所在字符插入
S ##删除光标所在行插入
o ##光标所在行的下一行插入
O ##光标所在行的上一行插入
四、退出模式
:q ###退出,当vim进入文件没有对文件内容做任何操作可以按"q"退出
:q! ###强行退出,当vim进入文件对文件内容有操作但不想保存退出
:wq ###保存退出
:wq! ###强行保存退出,只针对与root用户或文件所有人生效
五、文件输入输出管理
1.输入输出定义
1)输入就是我们的键盘,鼠标和我们用这些硬件在系统只哦个录入的字符
2)输出就是系统接收到我们想要实现的功能字符后,经过进程的处理产生字符
输出会有两种出现:
编号1为正确输出
编号2为错误输出
默认着两种输出都会被系统定向到字符设备中(/dev/)
2.管理输出
1)输出重定向:重定向动作会覆盖源文件内容
> ##重定向正确输出
2> ##重定向错误输出
&> ##重定向所有输出
2>&1 ##把错误输出的编号由2转换为1
举例:
find /etc/ -name passwd > file.out #将passwd里面正确的输出( > )重定向到file.out中
find /etc/ -name passwd > file.out #将passwd里面正确的输出( > )重定向到file.out中
find /etc/ -name passwd &> file.all #将passwd里面全部的输出(&>)|(2>&1)重定向到file.all中
重输出会覆盖原文件
2)输出追加: 追加会把定向的输出放到原文件最后,不会覆盖原文件
>> ##追加正确输出
2>> ##追加错误输出
&>> ##追加所有输出
举例:find /etc/ -name passwd >> westos #将passwd的正确输出内容追加( >> )到westos中
且不会覆盖原文件
3.用重定向完成非交互式多行录入
方法:首尾一致,标准为EOF
<<EOF
内容
EOF
举例: cat >file <<EOF #查看huanying.sh的文件把它导入到file中
hello
EOF
sh huanying.sh #在我们调用sh命令不能自动运行,需要借助<<输入重定向符号进行重定向。
4.管道:通过管道后输出会变成输入,那么不会再输出到字符设备文件中,显示到屏幕
| ##把第一条命令的正确输出变成第二条命令的输入
tee ##将输出复制一份到指定位置
举例: ls /bin | wc -l ##统计/bin中有多少文件,且没有显示ls命令的输出
ls /bin | tee file | wc -l ###统计/bin中有多少个文件,并将ls命令的输出通过tee保存到file文件中
echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。