一、vim 介绍
vim 是 vi 的扩展,是一个功能丰富的文本编辑器,对于一个运维人员的必备基础技能之一,就是熟练使用 vim/vi 编辑器。在最小化安装环境一般只有 vi,没有 vim,需要手动安装一下。
yum install -y vim
二、vim 模式

1、普通模式
默认的编辑模式。从 shell 窗口打开文件进入的第一个模式,其他模式可以通过按 ESC 键回退到普通模式。

2、命令模式
用于执行复杂查询命令,从普通模式输入“:”,“/”或“?”等符号即可进入命令模式,回车键表示输入完成

3、插入模式
该模式就类似 window 中操作文本文件,普通模式下可通过输入“i”,“o”等字符即可进入插入模式。编辑完成后按 ESC 键退出到普通模式。

4、可视模式
用于选定文本块;可以在正常模式下输入“v”(小写)来按字符选定,输入“V”(大写)来按行选定,或输入“Ctrl-V”来按方块选定。

三、每个模式的常用操作
1、vim 打开文件方法
选项 | 说明 |
---|---|
vim filename | 正常打开vim文件 |
vim + filename | 打开文件,并将光标置于最后一行 |
vim +n filename | 打开文件,并将光标置于第n行 |
vim +/ssh passwd | 打开文件,并将光标置于第一个与ssh匹配的位置 |
vim -r filename | 恢复上次vim打开时崩溃的文件 |
2、普通模式
操作 | 说明 |
---|---|
G | 跳到最后一行 |
gg | 跳到第一行 |
5G | 跳到第5行 |
yy | 复制当前行 |
5yy | 复制从当前行往后的5行 |
p | 粘贴已复制的行到光标后 |
P | 粘贴已复制的行到光标前 |
dd | (1)剪切当前行,以p粘贴;(2)删除当前行 |
5dd | 删除5行 |
dG | 从当前行删到最后一行 |
D | 从光标处删除到行尾 |
5dG | 从当前行删到第五行 |
x | 删除光标所在位置的字符 |
5x | 删除光标所在位置的字符及往后的5个字符 |
X | 删除光标所在位置的前一个字符 |
u | 撤销之前的操作 |
Ctrl + r | 反撤销(恢复撤销) |
数字0或者^ | 将光标移动到当前行的行首 |
$ | 将光标移动到当前行的行尾 |
ctrl +f | 向下翻页 |
ctrl +b | 向上翻页 |
n | 查找下一个相同的字符 |
N | 查找上一个相同的字符 |
r | 替换光标所在位置的字符 |
R | 从光标当前位置开始替换字符,输入内容会覆盖后面等长的内容,按“Esc”结束输入 |
h | 向左移动光标 |
j | 向下移动光标 |
k | 向上移动光标 |
l | 向右移动光标 |
3、命令模式常用命令
操作 | 说明 |
---|---|
:wq | 保存退出 |
:wq! | 强制保存退出 |
:q | 不保存退出 |
:q! | 强制退出,一般已经对文件内容已经进行了修改,不保存强制退出的情况使用 |
:set nu | 设置行号显示 |
:set nonu | 取消行号 |
:set list | 取消行号 |
set paste | 启用粘贴模式 |
set nopaste | 关闭粘贴模式 |
:s/a/b/g | 将当前光标所在行中所有a替换成b |
:2,5s/a/b/g | 将2-5行中所有a替换成b |
:%s/a/b/g | 将文件所有的a替换成b |
/word | 从文本查找字符串,按“n”可以查看下一个相同字符 .注意:查找会区分大小写 |
/^word | 查询以work开头的行 |
/work$ | 查询以work结尾 |
?work | 从文本查找字符串,按“n”可以查看上一个相同字符 |
4、进入插入模式方法
操作 | 说明 |
---|---|
i | 光标所在位置插入 |
I | 光标所在位置行首插入 |
o | 光标所在位置下一行插入 |
O | 光标所在位置上一行插入 |
a | 光标所在位置下一个字符的位置插入 |
A | 光标所在位置行尾插 |
进入到插入模式后就如同进入一个文档文件,按ESC键退出到普通模式
5、可视化模式常用操作
普通模式进入可视化模式
操作 | 命令 |
---|---|
v | 字符选择模式,选中光标经过的所有字符 |
V | 行选择模式,选择光标经过的所有行 |
可视化模式可以实现批量的删除增加注释,生产环境经常使用
四、vim 可能遇到的问题

出现上面的情况有两种可能:
1、重复编辑,在另外一个远端也有打开这个文件
2、异常断开,在正在编辑时突然关机或网络断开的情况
vim 他不是实时写入的机制,他会先把文件写到内存,等我们执行 w 操作以后,再写回到原文件。那么在写回原文件,或者执行 q 的放弃操作之前,会生成一个临时的文件,以 . 开头,以 .swp 结尾。
解决办法:
直接删除自动生成的临时文件file.swp或者报错界面直接输入D放弃编辑
rm -f .filename.swp