vim 是vi的进阶版;vim是linux中的一个文本处理器,具有程序编辑能力,而且可以自动以颜色辨别语法错误。
1.vim的三种模式:命令模式,插入模式,退出模式;
2.命令模式下配置vim的工作方式
:set nu #设置行号
:set nonu #取消行号
:set mouse #添加鼠标选择
:set cursorline #添加下划线
以上操作只是对当前vim命令模式下生效,退出该模式设置取消;如果需要永久生效,在/etc/vimrc文件添加以上命令生效
命令模式下搜索关键字
/ 关键字
n # 向下匹配 N #向上匹配
命令模式下字符的复制
y1 #复制1个字母
y3l #复制3个字母
yw #复制一个单词
y3w #复制3个单词
yy #复制1行
y3y #复制3行
p #粘贴
命令模式下字符的删除
dl #删除一个字母
d2l #删除2个字母
dw #删除1个单词
d2w #删除2个单词
dd #删除1行
d2d #删除2行
命令模式下的字符剪切
cl #剪切1个字母
c4l #剪切4个字母
cw #剪切1个单词
c4w #剪切4个单词
cc #剪切1行
c4c #剪切4行
p #粘贴
esc #剪切过后会进入到插入模式,在执行粘贴动作时一定要退出插入模式
3.vim的可视化模式
在命令模式下按ctrl+v键进入到可视化模式,在可视化模式可以区域选择字符:
ctrl + v选中要加入字符所在列
按 i 进入插入模式,写入需要加入的字符
按esc键退出
4.批量修改字符
:%s/原有字符/替换字符/g #替换全文每一行出现的原有字符
:%s/原有字符/替换字符 #替换全文每一行出现的第一个原有字符
:1,5s%s/原有字符/替换字符/g #替换1到5行每行出现的原有字符
5.vim的分页浏览模式
ctrl +w s #上下分页浏览
ctrl + w v #左右分页浏览
ctrl +w c #关闭光标所在屏幕
ctrl +w 上下左右键 #光标移动到指定屏幕
:sp file2 #同时编辑当前文件和file2
6.vim 光标移动
在命令模式下:
:数字(12) #移动到当前编辑文件的第几(12)行
G #文件最后一行
gg #文件第一行
在插入模式:
i #光标所在位置插入
I #移动光标到所在行的行首
a #光标所在字符的下一个位置
A #光标所在行行尾
o #光标所在行下一行
O #光标所在行上一行
s #删除光标所在字符插入
S #删除光标所在行插入
7.vim 退出模式
:q #退出编辑当前文件,不进行保存
:wq #保存文件,退出编辑文件
:q! #强制退出,对于当前编辑文件文件不进行保存
:wq! #保存文件,强制退出
8. vim 注意事项
当文件名称存在时,直接进入文件进行编辑,当文件名不存在时,vim新建文件进行编辑,退出文件保存新建文件;
vim异常退出时,系统会建立.file.swap缓存文件,这个文件保存者没有“:wq”动作保存的信息;在次时用vim对文件进行编辑会提示:O #只读打开 E #直接会略.file.swap信息进行编辑 R #利用.file.swap进行数据恢复再编辑
D #删除.file.swap Q #退出 A #终止
9.输入输出的定义
输入:简单的说就是我们键盘或者鼠标以及其他设备利用硬件在系统录入的字符
输出:系统接受我们的请求,经过cpu以及进程的处理产生的字符,默认情况下输出会被系统定向到字符设备中;
输出会由两种输出:编号为1正确输出;编号为2错误输出;
10.非交互式多行录入
vim C_pass.sh
passwd
sh C_pass.sh #shell脚本不会被调用自动执行
echo <<END
redhat
redhat
END
sh C_pass.sh #脚本可以进行运行;避免交互
11.重定向
> #重新定向正确输出
2> #重定向错误输出
&> #重定向所有输出
2>&1 #将错误输出的标号由2转化为1
实验:
请用普通用户做以下实验
find /etc/ -name passwd > file.out
find /etc/ -name passwd 2> file.out
find /etc/ -name passwd &> file.all
"注意:重定向是会覆盖原文件内容的!!!"
vim westos
hello westos
find /etc/ -name passwd > westos
cat westos ##原文件内容不见了
输入重定向:tr ‘a-z’'A-Z' < redhat
格式化输入内容到文件:cat > redhat <<EOF
HELLO
WORLD
EOF
12.追加
保持文件内容不变的情况下把输出追加到其他文件进行保存;
>> #追加正确输出
2>> #追加错误输出
&>> #追加所有输出
实验:
find /etc/ -name passwd >> westos
find /etc -name passwd 2>> westos
find /etc -name passwd &>> westos
13.管道命令
将管道命令符的前一个命令的输出转化为管道命令符后面的命令的输入;管道用来组合多条命令
ls /bin | wc -l
如果想要将通过管道符号的输出保存在指定文件,使用tee filename #复制输出到指定的filename文件
ls /bin | tee redhat | wc -l
cat redhat