vim的三种模式
命令模式 | 浏览文件,临时更改vim的工作方式,对字符批量管理 |
---|---|
插入模式 | 对文件内容进行编辑 |
退出模式 | 退出vim程序 |
- 命令模式
vim打开文件后默认进入命令模式
- 插入模式
在命令模式中输入 i 或者 a 进入插入模式 - 退出模式=
在插入模式中按Esc健退出插入模式,按“ :+退出方式”进入退出模式
vim的命令模式
(1) 调整vim的工作方式
在vim程序中
:set 调整参数
示例:
:set nu #在每一行前显示行号
:set nonu #取消行号显示
:set mouse=a #显示鼠标
:set cursorline #显示行线
:set nu
:set cursorline
注意:
在vim程序中设定的vim的工作方式是临时的,在vim关闭后还会还原。
如果要永久保存vim的工作方式需要编辑vim的配置文件:/etc/vimrc
(2) vim中进行关键字符的搜索
/ + 关键字 (高亮显示) n向下匹配 N向上匹配
:noh #取消高亮显示
(3) vim中字符的管理
- y #字符的复制
yl ##复制一个字母
y3l ##复制3个字母
yw ##复制一个单词
y3w ##复制3个单词
yy ##复制一行
y3y ##复制3行
- d #字符的删除
dl ##删除一个字母
d3l ##删除3个字母
dw ##删除一个单词
d3w ##删除3个单词
dd ##删除一行
d3d ##删除3行
cl ##剪切一个字母
c3l ##剪切3个字母
cw ##剪切一个单词
c3w ##剪切3个单词
cc ##剪切一行
c3c ##剪切3行
“注意” 在剪切之后的vim会进入插入模式,如果要粘贴需要按[esc] 退出插入模式然后按p粘贴
(4) vim 可视化模式
ctrl + v ##在这个模式下可以选择区域操作,此时左下角出现了VISUSL BLOCK,表示进入了vim可视化模式
在此模式下可以选择区域操作批量添加字符
步骤: ctrl + v 上下健选中要加入的字符所在的列
按大写的 I
加入所要加的字符
按[esc]
(5)字符的替换
:%s/要替换的字符/替换成的字符/g %s 代表所有行 g代表所有列
eg:
:%s/ : /@/g ##替换全文的 : 为 @
:1,5s/:/@/g ##替换1-5行的 : 为 @
:/adm/,/halt/s/:/@/g ##替换adm 到halt 之间的:为@
eg: :%s/@/kkkk/g
HR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NDE3Njc3,size_16,color_FFFFFF,t_70)
eg::1,5s/kkk/@A@/g
(6) vim的分屏功能
ctrl+w s ##上下分屏
ctrl+w v ##左右分屏
ctrl+w c ##关闭光标所在屏幕
ctrl+w 上下左右 ##光标移动到指定屏幕
:sp file2 ##同时编辑当前文件和file2
同时编辑两个文件
(7)vim在命令模式下光标的移动
gg ##光标移动到文件的第一行
G ##光标移动到文件的最后
:数字 ##光标移动到指定的行
#######插入模式#########
插入模式下光标的移动
i ##光标所在位置插入
I ##光标所在行行首插入
o ##光标所在行下一行插入
O ##光标所在行的上一行插入
a ##光标所在字符的下一个字符插入
A ##光标所在行的行尾插入
s ##光标所在字符删除并插入
S ##光标所在行删除并插入
vim的退出模式
:q
:wq
:q!
:wq! ##强制退出保存 ,在对只读文件编写时使用,注意,所编写的只读文件必须是当前用户的文件
##或者当前操作的用户为root
系统的输入输出管理
1 控制输入输出的符号
> | 重定向正确输出 |
---|---|
2> | 重定向错误输出 |
&> | 重定向所有输出 |
注意:重定向会覆盖原文件内容
以下操作必须在普通用户下进行
以/etc/passwd 文件为例
find /etc -name passwd >file ##定向正确输出到file
find /etc -name passwd 2>file.err ##定向错误输出到file.err
find /etc -name passwd 2>file.all ##定向所有输出到file.err
>file ##清空file
2.输出追加不覆盖
>> 可以将正确输出追加在文件中并且不会覆盖原内容
2>> 追加错误输出到文件之后
&>> 追加所有输出到文件之后
- 管道的应用
管道的作用
"|" 管道的作用是把前一条命令的输出变成后一条命令的输入
注意:
管道只允许正确的输出通过
通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理
如果需要保存输出内容,那么需要复制一份输出,用到的命令是 "tee"
此实验在普通用户下操作:
find /etc/ -name passwd | wc -l
##会看到的结果为2,因为错误输出不能通过管道
find /etc/ -name passwd 2>&1 | wc -l
##会看到19,因为编号为2的输出被"2>&1" 转换为编号1
find /etc/ -name passwd 2>&1 | tee file | wc -l
##保存一份输出到file,在统计行数
注意:当使用tee时,一定要注意其与wc - l 的顺序,如果wc - l 在前,则保存的内容便是 wc - l 的统计结果