一、vim的模式
模式 |
功能 |
命令模式 |
进行查看文件内容, 修改文件, 关键的搜索等操作。 |
编辑模式 |
对文件内容进行修改和内容添加 |
末行模式 |
执行Linux命令, 保存文件, 进行行的跳转, 窗口分屏等操作 |
具体关系如图

二、命令模式
1.保存退出
2.代码格式化
3.光标移动
快捷键 |
功能 |
备注 |
h |
光标左移 |
<– |
j |
光标下移 |
↓ |
k |
光标上移 |
↑ |
l |
光标右移 |
–> |
0 |
光标移动到行首 |
/ |
$ |
光标移动到行尾部 |
/ |
gg |
光标移动到文件头 |
第一行的开始 |
G |
光标移动到文件尾部 |
最后一行的开始 |
nG |
行跳转 |
跳转到第n行 |
n+回车 |
相对跳转 n 行 |
向下跳转n行 |
4.删除命令
vim中其实没有删除操作,所谓的删除都是剪切
快捷键 |
功能 |
备注 |
x |
删除光标后边的字符 |
光标盖住的字符 |
X |
删除光标前边的字符 |
/ |
dw |
删除单词 |
要先把光标移动到单词的第一个字母上再删除,否则单词只能被删除一部分 |
d0 |
删除光标前的字符串 |
从字符串开头到光标当前位置的字符串被删除了 |
d$ |
删除光标后的字符串 |
从光标当前位置到字符串尾部的字符串被删除了 |
dd |
删除光标所在行 |
无 |
ndd |
删除n行 |
从光标所在行开始删除n行,n对应的是一个整数 |
5.撤销和反撤销
快捷键 |
功能 |
备注 |
u |
撤销 |
相当于windows中的 ctrl+z |
ctrl+r |
反撤销 |
相当于ctrl+y |
6.复制和粘贴
由于vim没有删除只有剪切,所以删除的数据可以用来粘贴
快捷键 |
功能 |
备注 |
p |
粘贴到光标所在行的下边 |
小写的 p |
P |
粘贴到光标所在行的上边 |
大写的 P |
yy |
复制光标所在行 |
/ |
nyy |
从光标所在行向下复制 n 行 |
n 是要复制的行数,代表一个整数 |
7.可视模式
可视模式类似于windows中鼠标选择一块区域(进行多选)
1 2 3
| v: 进入的字符可视化模式(Characterwise visual mode),文本选择是以字符为单位的。 V :进入的行可视化模式(Linewise visual mode),文本选择是以行为单位的。 ctrl-v: 进入的块可视化模式(Blockwise visual mode),可以选择一个矩形内的文本。
|
快捷键 |
功能 |
备注 |
h |
光标向左移动 |
移动光标用于可视模式下的数据块选择 |
j |
光标向下移动 |
移动光标用于可视模式下的数据块选择 |
k |
光标向上移动 |
移动光标用于可视模式下的数据块选择 |
l |
光标向右移动 |
移动光标用于可视模式下的数据块选择 |
d |
删除(剪切) |
删除可视模式下选中的数据块 |
y |
复制 |
复制可视模式下选中的数据块 |
p |
数据粘贴到光标的后边 |
粘贴在可视模式下复制或剪切的数据块 |
P |
数据粘贴到光标的前边 |
粘贴在可视模式下复制或剪切的数据块 |
通过可视模式进行代码注释
1 2 3 4 5 6
| 1.通过 ctrl+v 进入块可视模式 2.移动光标上移(k)或者下移(j),选中多个代码行的开头 3.选择完毕后,按大写的的I键,进入“insert” 模式,输入注释符,例如: // 4.最后按ESC键
同样 Ctrl+v 进入列选择模式,移动光标把要删除的注释符选中,按下d,注释就被删除了
|
8.替换
命令模式下的替换功能并不强大,常用于单字符的切换
快捷键 |
功能 |
备注 |
r |
替换光标后的单个字符 |
无 |
R |
替换光标后的多个字符 |
按 esc 结束替换 |
9.查找
/查找的关键词
回车
使用n/N切换搜索到的关键词们
搜索快捷键 |
关键字遍历 |
描述 |
备注 |
/ |
n |
从当前位置向下 |
/ |
|
N |
从当前位置向上 |
/ |
? |
n |
从当前位置向上 |
/ |
|
N |
从当前位置向下 |
/ |
# |
n |
从当前位置向上 |
光标需要先放在被搜索的关键字上,键盘上按 # |
|
N |
从当前位置向下 |
|
10.查看man文档
man 文档, 是Linux中自带的帮助文档, 可查询shell命令或标准API函数或系统自带的配置文件格式的说明等信息。
但是man也是分章节的
章节 |
说明 |
section 1 |
Linux提供的所有shell命令 |
section 2 |
系统函数(由内核提供的) |
section 3 |
库调函数(程序库中的函数) |
section 4 |
特殊文件(通常在/dev目录中可以找到) |
section 5 |
系统配置文件格式和约定,比如:/etc/passwd |
section 6 |
游戏(如果有的话) |
section 7 |
杂项(包括宏包和约定) |
section 8 |
系统管理命令(通常仅针对root用户) |
section 9 |
内核例程[非标准] |
1 2 3 4 5 6 7 8 9 10 11
| man 1 cp
man 2 read
man 3 fread
man 5 passwd
|
如果不写章节号,从第一章开始搜索查询的关键字,如果查询到了, 直接就结束了
比如当查询 printf 函数时不加章节号,就得不到我们我们想要的结果
当我们在vim的命令模式下使用man
1.找到要查看的函数,将光标放上去
2.输入 章节号 + K ,就可以了
三、编辑模式
如果要切换到编辑模式需要从命令模式通过快捷键来切换
快捷键 |
功能 |
i |
从光标前边开始输入 |
a |
从光标的后边开始输入 |
o |
在光标下边创建新行,在新行中输入 |
s |
删除光标后边的字符,从删除位置开始输入 |
I |
从当前行行首开始输入 |
A |
从当前行行尾开始输入 |
O |
在光标上边创建新行,在新行中输入 |
S |
删除当前行,从当前行开始输入 |
编辑完成后,按 Esc 就可以回到命令模式
四、末行模式
1.模式切换
1 2 3 4 5 6
| :
1. 按两下 Esc 2. 在末行模式执行一个完整指令后自动回到命令模式
|
2.保存退出
末行模式下输入的命令 |
功能 |
q |
退出,如果退出时文件没有保存,vim会提示是否要保存 |
q! |
直接退出,不保存 (强制退出) |
w |
保存,不退出 (相当于在Windows中按了 Ctrl + S) |
wq |
保存并退出 |
x |
保存并退出 |
3.替换
末行模式下的替换功能强大的多
末行模式下的替换命令 |
说明 |
s/被替换的关键字/新的关键字/g |
只对光标所在行进行替换 |
行号1, 行号2s/被替换的关键字/新的关键字/g |
[行号1, 行号2] 是一个从小到大的范围,对这个范围进行替换 |
%s/被替换的关键字/新的关键字/g |
% 代表对所有行进行替换 |
g的功能是一整行都进行替换
如果不加g,效果是每一行的第一个关键词被替换
4.分屏
末行模式命令或者快捷键 |
说明 |
备注 |
sp |
水平分屏,多个窗口垂直排列 |
多个窗口中显示同一个文件里的内容 |
vsp |
垂直分屏,多个窗口水平排列 |
多个窗口中显示同一个文件里的内容 |
ctrl+w+w |
光标在打开的屏幕之间切换 |
快捷键操作 (按住 Ctrl 然后按两次 w) |
qall |
同时退出多个屏幕 |
/ |
wqall |
同时保存退出多个屏幕 |
/ |
sp 文件名 |
分屏的同时指定打开的文件的名字 |
在新窗口中显示指定的文件的内容 |
vsp 文件名 |
分屏的同时指定打开的文件的名字 |
在新窗口中显示指定的文件的内容 |
除了在命令模式下分屏, 我们也可以在使用vim打开文件的时候直接分屏, 下边是需要用到的参数:
-o: 水平分屏
-O: 垂直分屏
1 2 3 4
| vim -o 文件1, 文件2, 文件3 ...
vim -O 文件1, 文件2, 文件3 ...
|
5.行跳转
6.执行shell命令