vim
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。vim是自由软件。
1.命令模式
浏览文件,临时更改vim的工作方式,对字符批量处理
2.插入模式
对文件内容进行编辑
3.退出模式
正确安全退出vim程序
一、命令模式
1.vim帮助
方法1:
vim :help
方法2
vimtutor
2.vim工作参数设定
#临时设定
:set 参数信息
:set nu ##每行加序号
:set nonu ##取消每行序号
:set mouse=a ##切换鼠标操作
:set cursorline ##光标所在行加下划线
注意:
以上设定方式在vim退出后会还原默认
#永久设定
vim /etc/vimrc
set nu
set mouse=a
set cursorline
注意:
以上操作必须用root用户才能完成
#3.字符管理
y ##复制
yl ##复制一个字母
y3l ##复制3个字母
yw ##复制一个单词
y3w ##复制3个单词
yy ##复制1行
y3y ##复制3行
c ##剪切
cl ##剪切1个字母
c3l ##剪切3个字母
cw ##剪切1个单词
c3w ##剪切3个单词
cc ##剪切1行
c3c ##剪切3行
注意:
当用c做剪切动作后,vim会进入插入模式
如果需要粘贴那么要按退出插入模式
然后按
粘贴
d ##删除
dl ##删除一个字母
d3l ##删除3个字母
dw ##删除1个单词
d3w ##删除3个单词
dd ##删除一行
d3d ##删除3行
p ##粘贴
u ##撤销
ctrl+r ##恢复
#4.vim的可视化模式
ctrl+v ##进入可视化模式
#可视化模式的批量添加
ctrl+v 进入可视化模式
选中要添加字符所在列
按"I"进入插入模式
写入字符
按批量添加字符出现
#5.字符的替换
:%s/源字符/替换后字符 ##每一行出现的第一个关键字
:%s/源字符/替换后字符/g ##全文替换,s所有行,g表示所有列
:3,5s/源字符/替换后字符/g ##替换第三行到第五行的关键字
:/lp/,/halt/s/sbin/hello/g ##替换lp字符和halt字符之间的所有关键字
#6.在vim中编写多个文件
vim file
:sp file1 ##同时编辑当前文件和file1
ctrl+w w ##切换窗口
ctrl+w s ##上下分屏
ctrl+w v ##左右分屏
ctrl+w c ##关闭光标所在屏幕
ctrl+w 上|下|左|右 ###光标在窗口之间的移动
先按ctrl+w,松开,再按其他键
#7.光标移动及字符搜索
#光标的移动
:数字 ##光标移动到指定的行
< HOME > ##光标移动到行首
< END > ##光标移动到行尾
G ##光标移动到最后一行
gg ##光标移动到第一行
#搜索字符
/关键字
n #向下匹配
N #向上匹配
二、插入模式
i ##光标所在位置插入
I ##光标所在行的行首插入
A ##光标所在行行尾插入
a ##光标所在字符的下个字符插入
s ##删除光标所在字符插入
S ##删除光标所在行插入
o ##光标所在行的下一行插入
O ##光标所在行的上一行插入
三、退出模式
:q #退出,在打开文件后没有对文件做任何修改时可使用
:wq #退出保存,在对文件修改后并保存内容时使用
:q! #强制退出,在对文件做修改后要放弃修改时使用
:wq! #强制退出保存,在对属于自己的文件或你时root用户时使用
####vim异常退出######
当vim异常退出时会生成.file.swp文件
当再次打开此文件时会出现以下情况:
[O]pen Read-Only, (E)dit anyway, ( R )ecover, (D)elete it, (Q)uit, (A)bort:
只读打开 继续编辑 恢复数据 删除swap文件 退出 退出
无论按[O] (E) ( R ) (Q) (A) 任何一个都不会删除.swp文件
那么再次打开hello文件是还会出现以上界面直到按(D),.swp文件被删除
vim恢复正常工作
linux中管理输入输出
#输出重定向
> ##重定向正确输出
2> ##重定向错误输出
& ##重定向所有输出
"注意:重定向动作会覆盖源文件内容"
例子:
用student用户登陆系统
find /etc/ -name passwd **查看etc下的passwd文件 ##此命令在student用户下执行因为权限问题会报错
find /etc/ -name passwd > file
find /etc/ -name passwd 2> file
find /etc/ -name passwd &> file
#输出追加
"追加会把定向的输出放到原文件最后不会覆盖原文件"
>> ##追加正确
2>> ##追加错误
&>> ##追加所有
find /etc -name passwd >> file
find /etc -name passwd 2>> file.err
find /etc -name passwd &>> file.all
#输入管理
<<EOF
内容
EOF
cat > westos <<EOF
hello
westos
world
EOF
cat westos ##查看wesotos
hello
westos
world
###脚本修改开机密码
vim test.sh
#!/bin/bash
passwd <<EOF
student
2018lee
2018lee
EOF
sh test.sh ##运行test
“注意:重定向动作会覆盖源文件内容”#管道
| ##把第一条命令的正确输出变成第二条命令的输入;管道只允许正确输出通过
2>&1 ##将编号为2的错误输出转换成编号为1
tee ##将输出复制一份到指定位置
ls /bin | wc -l ##统计/bin中有多少文件
find /etc -name passwd 2>&1 | wc -l ##会看到19,因为编号为2的输出被“2>&1”转换为编号1
find /etc/ -name passwd 2>&1 | tee file |wc -l ##保存一份输出到file再统计行数