1. 简介
vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows系统下的notepad(记事本)编辑器。vim(vi improved)是vi编辑器的加强版,比vi更容易使用,vi的命令几乎全部都可以在vim上使用。
2. 四种模式关系
- 命令模式:vim编辑器的默认模式,在此模式下可以移动光标位置,通过快捷键对文件内容进行复制、粘贴、删除等操作。
- 编辑模式或输入模式:命令模式下按小写字母a或i可进入。
- 末行模式:命令模式下输入冒号:可进入,在此模式下可对文件进行查找、替换、保存、退出等操作。
- 可视化模式:命令模式下按v(可视块)或ctrl+v(可视列)或V(可视行)可进入,在此模式下可做一些块/列/行选操作。
3. 命令模式
命令模式下相关操作总结如下:
# 移动光标
gg 移动光标到首行
G 移动光标到末行
100gg 移动光标到第100行
# 翻屏
ctrl+b/PageUp 向上翻屏
ctrl+f/PageDown 向下翻屏
# 复制
yy 复制当前光标所在行
5yy 复制从当前光标所在行开始的多行
# 剪切(剪切不粘贴就是删除)
dd 剪切当前光标所在行
5dd 剪切从当前光标所在行开始的多行
# 粘贴
P(大P) 粘贴在光标所在行之前
p(小p) 粘贴在光标所在行之后
# 删除后,该行变成空白行
D
# 撤销
u # undo
# 恢复(这里的恢复是指恢复上一个撤销)
ctrl+r # redo
4. 末行模式
末行模式下相关操作总结如下:
# 保存与退出操作
:w 保存
:wq 保存并退出
:q! 强制退出但不保存
# 查找
命令模式下输入/ + 关键字即可高亮显示
在搜索结果中切换上/下结果使用N/n,其中N代表上一个结果,n代表下一个结果
# 替换光标所在行的关键词
:s/要替换的关键词/替换后的关键词 + 回车键 #只替换这一行第一个满足条件的结果
:s/要替换的关键词/替换后的关键词/g + 回车键 #替换这一行所有满足条件的结果,g=global
# 替换整个文档的关键词
:%s/要替换的关键词/替换后的关键词 + 回车键 #只替换每一行第一个满足条件的结果
:%s/要替换的关键词/替换后的关键词/g + 回车键 #只替换每一行所有满足条件的结果,g=global
# 显示行号
:set nu # nu=number
# 取消行号
:set nonu
# 开启paste模式
:set paste
# 关闭paste模式
:set nopaste
补充说明:为什么需要使用paste模式?
答:终端复制来的文本会存入键盘缓存,而vim会把这些内容作为用户键盘输入来处理,这就导致在遇到换行符时,如果vim开启了自动缩进,就会默认把上一行缩进插入到下一行的开头,最终使代码变得混乱不堪。
5. 编辑模式
编辑模式下相关操作总结如下:
# 在光标之前插入内容
命令模式+i
# 在光标之后插入内容
命令模式+a
6. 可视化模式
可视化模式下相关操作总结如下:
# 复制块内容
step1:命令模式+v进入可视化块模式
step1:使用方向键选择要复制的块,然后按下y键
step2:再按两下ESC返回命令模式,移动光标到需要粘贴的位置
step3:按p(小p)键粘贴到光标之后,或者按P(大P)键粘贴到光标之前
# 为配置文件添加多行注释
step1:按两下ESC返回命令模式,移动光标到指定位置
step2:按下ctrl+v键进入可视化列模式 # 必须按ctrl+v,而不是v
step3:使用上下键选择需要注释的行
step4:按下I(大写的I键),进入插入模式,输入"#"号注释符
step5:按两下ESC返回命令模式,就可以看到多行注释后的效果了
# 为配置文件移除多行注释
step1:按两下ESC返回命令模式,移动光标到指定位置
step2:按下ctrl+v键进入可视化列模式 # 必须按ctrl+v,而不是v
step3:使用上下键选择需要取消注释的行
step4:直接按Delete键,就可以完成删除注释的操作,并且自动返回到命令模式
7. 其他说明
问题1:为什么有时候vim编辑器打开文件后提示有.swp异常文件?
答:这是因为在使用vim操作文件之后并没有正常去退出vim编辑器,而是突然关闭终端或者遇到断电等情况,就会出现上述问题。解决方法就是根据上面的提示按下D键删除交换文件就好了。
问题2:退出vim编辑器有几种方式,它们有什么区别?
答:有三种。:q!
表示强制退出且不保存文件;:wq
表示退出且保存文件;:x
在文件没被修改时等价于:q!
,在文件被修改时等价于:wq
。:wq
和:x
有一个重要的区别就是,当文件没有被修改时,使用:wq
退出,文件的修改时间会被更新,但是使用:x
不会。