一、vi/vim编辑器介绍
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在
vi是visual interface的简称, 是Linux中最经典的文本编辑器(Windows中的记事本)
vi的核心设计思想:让程序员的手指始终保持在键盘的核心区域, 就能完成所有编辑操作
vi/vim的特点:
- 只能是编辑文本内容, 不能对字体段落进行排版
- 不支持鼠标操作
- 没有菜单
- 只有命令
vim 是从vi的升级版,具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
由于在程序员中被广泛使用, 被称为编辑器之神
二、vim的使用
1、打开文件
vim [options] 文件名
vi demo.txt # 以vi编辑器打开文件
vim demo.txt # 以vim编辑器打开文件
vim +5 demo.txt # 直接打开文件,并定位到第5行
2、三种模式
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入(插入)模式(Insert mode)和底线命令模式(Last line mode)
- 命令模式:复制、粘贴、移动光标、撤销和恢复
- 输入模式:编辑文件内容
- 底线命令模式:保存文件、退出文件、显示行号、搜索关键词
2.1、命令模式
当我们通过vim命令打开文件时,默认处于命令模式
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
比如我们此时按下i,并不会输入一个字符,i被当作了一个命令
命令 | 功能 |
---|---|
i | 在当前光标的前面插入内容 |
a | 在当前光标的后面插入内容 |
x | 删除当前光标所在处的字符 |
o | 在当前行后面插入一空行 |
O | 在当前行前面插入一空行 |
dd | 剪切或删除光标所在行 |
ndd | 从光标位置向下连续剪切或删除 n 行 |
yy | 复制光标所在行 |
nyy | 从光标位置向下连续复制n行 |
p | 粘贴 |
u | 撤销上一次命令,相当于Windows中的Ctrl + Z |
gg | 回到文件顶部 |
G | 回到文件末尾 |
: | 切换到底线命令模式,以在最底一行输入命令 |
2.2、输入模式
在输入模式中,可以使用以下按键:
- 字符按键以及shift键组合,输入字符
- 方向键,在文本中移动光标
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- HOME/END,移动光标到行首 / 行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- Ctrl + n,自动补全
- ESC,退出输入模式,切换到命令模式
2.3、底行命令模式
在Linux操作系统中,文件必须先保存后退出
命令 | 功能 |
---|---|
:w | 保存文件 |
:w 文件 | 另存为 |
:q | 退出(如果没有保存,不允许退出) |
:q! | 强行退出, 不保存退出 |
:wq | 保存并退出 |
:x | 保存并退出 |
:set nu | 开启行号显示 |
:set nonu | 取消行号显示 |
:s/旧关键词/新关键词 | 当行文本替换 |
:%s/旧关键词/新关键词 | (全局)文本替换 |
/关键词 | 搜索某一关键词(高亮显示) |
:noh | 取消高亮 |
:wq和:x两者的区别?
如果文件内容有改变,两者的效果是一样的。
如果文件内容没有改变:
- :x 不会改变文件的最后修改时间
- :wq 会更新文件的最后修改时间
Vim常见错误E325处理流程
如果在打开某个文件时,出现以上提示,那代表该文件之前没有保存就强制退出了,所以触发了vim的备份机制产生了一个xxx.swp交换文件
有两种解决方案:
一、无需保留之前的修改
第一步:按 d 键,系统会自动删除此备份
第二步:然后会进入vim编辑器,此时在底行命令模式下输入 :q 即可正常退出
后续再进入此问题不会再有此提示
二、需要保留之前的修改
第一步:按 r 键,恢复文件内容
第二步:针对找回的内容进行:wq保存并退出
第三步:输入ls -a 命令,查看所有文件(包括隐藏文件),复制出问题的交换文件
第四步:输入rm -f 隐藏的交换文件(比如出问题的文件是demo.txt,此时的交换文件就是 .demo.txt.swp)