一、vi 和 vim
1. vi 简介
- vi 是 versual interface 的简称,是 Linux 中最经典的文本编辑器
- vi 的核心思想——让程序员的手始终保持在键盘的核心区域,就能完成所有的编辑操作
2. vi 的特点
-
没有图形界面的功能强大的编辑器;
- 只能编辑文本内容,不能改变字体或排版;
-
不支持鼠标操作;
-
没有菜单;
- 在系统管理,服务器管理编辑文件时,其功能永远不是图形界面编辑器所能比拟的。
3. vim
- 在很多 Linux 发行版中,把 vi 做成 vim 的软连接
- vim 是从 vi 发展而来的一个文本编辑器,支持代码补全,编译及错误跳转等功能,被称为编辑器之神
二、vi打开文件
1. 打开或者新建文件
vi 文件名
2. 打开文件并且至制定行
vi
文件名
+行号
vi
文件名
vi
文件名
+
a.扩展
:set
nu
或者 :set
number
在终端输入vim
~/.vimrc
在配置文件中输入set
nu
或者 set
number
就可以了
3. 删除交换文件
- 进入 vi 编辑器后提示存在交换文件的异常,解决办法是直接按英文输入法的 d/D删除掉即可
三、vi 的三种基本工作方式
1. 命令模式
-
打开文件首先进入命令模式,是 vi 的入口
-
通过命令对文件进行常规的编辑操作,如定位、翻页、复制、粘贴、删除等
2. 末行模式
- 执行保存、退出等操作
- 是 vi 的出口
- 末行模式命令
命令 |
英文 |
功能 |
w |
write |
保存 |
q |
quit |
退出,如果没有保存则会提示保存 |
q! |
quit |
强制退出,不保存 |
wq |
write & quit |
保存并退出 |
x |
|
保存并退出 |
3. 编辑模式

四、vi命令
1. 移动命令
1) 方向和行内移动
a. 方向移动
命令 |
功能 |
手指 |
h |
向左 |
食指 |
j |
向下 |
食指 |
k |
向上 |
中指 |
l |
向右 |
无名指 |
b. 行内移动
命令 |
英文 |
功能 |
w |
word |
向后移动一个单词 |
b |
back |
向前移动一个单词 |
0 |
zero |
首行 |
^ |
|
行首,第一个不是空白字符的位置 |
$ |
|
行尾 |
2)行数跳转和上下翻页
a. 行数移动
命令 |
英文 |
功能 |
gg |
go |
文件顶部 |
G |
go |
文件末尾 |
数字gg |
go |
移动到 数字 对应行数 |
数字G |
go |
移动到 数字 对应行数 |
:数字 |
|
移动到 数字 对应行数 |
b. 上下翻页
命令 |
英文 |
功能 |
Ctrl + b |
back |
向上翻页 |
Ctrl + f |
forward |
向下翻页 |
H |
head |
光标至 屏幕顶部 |
M |
middle |
光标至 屏幕中间 |
L |
low |
光标至 屏幕底部 |
3)段落切换和括号切换
a. 段落移动
- vi 中使用空行来区分段落
- 在程序开发时,通常一段功能相关的代码写在一起
命令 |
功能 |
{ |
光标移动至 上一段 |
} |
光标移动至 下一段 |
b. 括号切换
4)标记
命令 |
英文 |
功能 |
mx |
mark |
添加标记x,x 是 a-z 或 A-Z 之间的任意一个字母 |
'x |
|
返回x标记的位置 |
- 添加标记的行如果被删除,标记同时被删除
- 如果其他行添加了相同的标记,则之前添加的标记就会被替换掉
2. 选中命令
- 选中文本,可视模式
- 按esc键放弃选中文本,返回至命令模式
命令 |
模式 |
功能 |
v |
可视模式 |
从光标位置开始按照正常模式选择文本 |
V |
可视行模式 |
选中光标经过的完整行 |
Ctrl + v |
可视块模式 |
垂直方向选中文本 |
3. 撤销和删除
1)撤销和恢复撤销
命令 |
英文 |
功能 |
u |
undo |
撤销上次的命令 |
Ctrl + r |
redo |
恢复撤销的命令 |
2)删除文本
命令 |
英文 |
功能 |
x |
cut |
删除光标所在字符或选中的文字 |
d(移动命令) |
delete |
删除移动命令对应的内容 |
dd |
delete |
删除光标所在行,可以ndd复制多行 |
D |
delete |
从光标位置删除至行尾 |
命令 |
功能 |
dw |
从光标位置删除到单词末尾 |
d0 |
从光标位置删除到一行的开头 |
d} |
从光标位置删除到段落的结尾 |
ndd |
从光标位置向下连续删除 n 行 |
d代码行G |
从光标所在行 删除到 限定代码行 之间的所有代码 |
d'x |
从光标所在行 删除到 标记a 之间的所有代码 |
4. 复制和粘贴
命令 |
英文 |
功能 |
y(移动命令) |
copy |
复制 |
yy |
copy |
复制一行,可以 nyy 复制多行 |
p |
paste |
粘贴 |
- 命令
d
, x
类似于图形界面的剪切操作——Ctrl + x
- 命令
y
类似于图形界面的复制操作——Ctrl + c
- 命令
p
类型于图形界面的粘贴操作——Ctrl + v
- vi 的文本缓存区只有一个,如果后续做了复制、剪切操作,之前缓存区中的内容会被替换
- vi 中的文本缓存区与系统的剪切板不是一个
- 在其他软件中
Ctrl + c
复制的内容在 vi 中粘贴只能使用鼠标
5. 查找和替换
1)替换
命令 |
英文 |
功能 |
工作模式 |
r |
replace |
替换当前字符 |
命令模式 |
R |
replace |
替换当前行光标后的字符 |
替换模式 |
-
替换命令的作用是不用进入编辑模式,对文件进行轻量级的修改
2)查找
a. 常规查找
- 查找到制定内容之后,使用
next
查找下一个出现的位置
- 如果不想看到高亮显示,随便查找一个不存在的字符串即可
b. 单词快速匹配
命令 |
功能 |
* |
向后 查找当前光标所在单词 |
# |
向前 查找当前光标所在单词 |
- 在开发中,使用单词快速匹配可以快速看到这个单词在什么位置被使用过
6. 缩进和重复执行
命令 |
功能 |
>> |
向右增加缩进 |
<< |
向左减少缩进 |
. |
重复上次命令 |
- 缩进一次增加或删除4个空格
- 在可视模式下,缩进只需要一个
>
或 <
号