一、文本编辑器--vim
1.什么是vim
vi和vim命令是linux中强大的文本编辑器, 由于Linux系统一切皆文件,而配置一个服务就是在修改其配置文件的参数。
vim编辑器是运维工程师必须掌握的一个工具, 没有它很多工作都无法完成。
vim其实是vi的升级版
vim和vi的区别:
vi 不高亮显示语法
vim 高量显示语法
#服务默认安装完没有vim命令
yum install -y vim
二、vim模式介绍
Vim编辑器中设置了三种模式: 命令模式、编辑模式、末行模式,每种模式分别又支持多种不同的命令快捷键,大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法。
命令模式: 控制光标移动, 可对文本进行查看、翻页、复制、粘贴、删除、剪切等工作。
使用vim filename 编辑一个文件时,一进入该文件就是命令模式了。
在这个模式下,可以进行光标移动、复制、删除、粘贴操作。
编辑模式: 正常的文本写入。
从命令模式进入编辑模式,只需你按一个键即可(i, I, a, A, o, O, r, R,s,S)。
当进入编辑模式时,会在屏幕的最下一行出现“INSERT”的字样。
从编辑模式回到命令模式只需要按键盘左上方的 ESC 键即可。
末行模式: 保存或退出文档,以及设置编辑环境
在命令模式下,输入 ":" 或者 "/" 即可进入末行模式。
在该模式下,可以进行的操作有,显示行号、搜索、替换、保存、退出。
1.命令模式
1)光标跳转
G(shift + g) #跳转文件最后一行
gg #跳转到文件首行
Ngg #跳转到第N行,N是行数
home #跳转到行首
^(shift + 6) #跳转到行首有字符的位置
0 #跳转到行首
end #跳转到行尾
$(shift + 4) #跳转到行尾
2)查看数据翻页
ctrl + f #向下翻页
ctrl + b #想上翻页
3)复制黏贴
yy #复制光标所在行
yNy #复制光标所在下面N行,N表示多少行
p #粘贴复制的内容,到光标所在下一行
P #粘贴复制的内容,到光标所在上一行
Np #粘贴N遍,N表示遍数
4)删除和剪切
dd #删除和剪切光标所在行
dNd #删除和剪切光标以下N行
dG #删除和剪切光标所在以下到结尾所有内容
dgg #删除和剪切光标所在以上到开头所有内容
D #删除和剪切光标所在位置到行末的所有内容,包括光标位置的内容
d + home #删除和剪切光标所在位置到行首的所有内容,不包括光标位置的内容
x #删除和剪切光标所在位置的内容
X #删除和剪切光标所在位置前面的内容
5)撤销
u #撤销上一次操作
ctrl + r #取消撤销
6)替换命令
r #替换光标所在位置的字符
R #替换多个字符,直到按ESC结束替换
2.编辑模式
#进入编辑模式的按键
i #进入编辑模式
I #进入编辑模式,光标跳到行首
a #进入编辑模式,光标后移一位
A #进入编辑模式,光标跳到行尾
o #进入编辑模式,光标下移一行
O #进入编辑模式,光标上移一行
s #进入编辑模式,并删除光标所在位置的内容
S #进入编辑模式,并删除光标所在行的内容
3.末行模式
1)作用
1.搜索
2.保存
3.退出
4.替换
5.优化查看
#输入 ":" 或者 "/" 即可进入末行模式
2)冒号进入末行模式
:w #保存文件修改
:q #退出编辑文件
:wq #保存并退出
! #强制
:w! #强制保存文件
:q! #强制退出,修改的内容不会被保存
:wq! #强制保存并退出
:x #先保存再退出
ZZ #保存退出(在命令模式下)
:N #跳转到N行,N代表行数
:set nu #显示行号
3)末行模式搜索
#搜索内容
/ + 字符串 搜索字符串
n: #匹配下一条搜索
N: #匹配上一条搜索
4)替换
#把文件中tcp都换成udp
:%s#tcp#udp#g
%: #代表所有行
s: #代表替换
g: #代表所有内容
#替换指定行数内容
:1,10s#tcp#udp#g
1,10: #代表只替换1-10行的内容
:1,10s#tcp#udp#gc #替换内容前询问
replace with udp (y/n/a/q/l/^E/^Y)? #询问内容
y: yes 确认替换
n: no 不替换
a: all 全部替换
q: quit 退出
l: last 只替换一次,退出
4.视图模式(可视块模式)
ctrl + v 进入块模式
作用:
1.批量删除:进入块模式,选中内容,按x删除
2.批量注释:进入块模式,选中要加注释的行,shfit + i进入编辑模式并到行首,输入#,按ESC
3.批量替换:进入块模式,选中要替换的内容,按r,然后输入要替换的值
shift + v 进入行模式
作用:
1.批量复制:进入行模式,选中内容,按y复制,按p粘贴
2.批量删除:进入行模式,选中内容,按x删除
5.vim常用的环境变量
1)临时环境变量
:set nu #显示行号
:set nonu #取消显示行号
:set ic #搜索时忽略大小写
:set list #显示制表符
2)一般配置
[root@Centos7 ~]# vim ~/.vimrc
syntax on
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
set number
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set ruler
set incsearch
set showmatch
set matchtime=10
set ignorecase
set cursorline
set t_Co=256
#语法高亮
syntax on
#配置默认编码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
#显示行号
set number
#自动对齐
set autoindent
set smartindent
#控制tab键为四个空格
set tabstop=4
#设置当行之间交错时使用4个空格
set shiftwidth=4
#设置在编辑过程中,于右下角显示光标位置的状态行
set ruler
#设置增量搜索,这样的查询比较smart
set incsearch
#高亮匹配括号
set showmatch
#高亮匹配括号时间
set matchtime=10
#忽略大小写
set ignorecase
#高亮显示当前行
set cursorline
#支持颜色代码
set t_Co=256
6.vim扩展知识
1)如何同时编辑多个文件
#水平打开两个文件,可以进行对比
[root@Centos7 ~]# vim -o host.sh host1.sh
#垂直打开两个文件,可以进行对比
[root@Centos7 ~]# vim -O host.sh host1.sh
#ctrl+ww 文件间切换
2)相同文件之间差异对比
#diff 文件对比(用的不多)
[root@Centos7 ~]# diff host.sh host1.sh
13,14c13
< ajksdhalsd
< qwueyqiwe
---
>
#vimdiff 以vim方式打开两个文件对比,标记不同的内容
[root@Centos7 ~]# vimdiff host.sh host1.sh
3)注意事项
#在编辑文件时报错
Swap file ".host.sh.swp" already exists!
#说明文件已打开,或者错误关闭
只需要删除.swp文件即可
[root@Centos7 ~]# rm -rf .host.sh.swp