一、vim的模式
模式 | 功能 |
---|---|
命令模式 | 进行查看文件内容, 修改文件, 关键的搜索等操作。 |
编辑模式 | 对文件内容进行修改和内容添加 |
末行模式 | 执行Linux命令, 保存文件, 进行行的跳转, 窗口分屏等操作 |
具体关系如图
二、命令模式
#以vim方式打开/创建 文件
vim 文件名
1.保存退出
ZZ
2.代码格式化
gg=G
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中鼠标选择一块区域(进行多选)
v: 进入的字符可视化模式(Characterwise visual mode),文本选择是以字符为单位的。
V :进入的行可视化模式(Linewise visual mode),文本选择是以行为单位的。
ctrl-v: 进入的块可视化模式(Blockwise visual mode),可以选择一个矩形内的文本。
快捷键 | 功能 | 备注 |
---|---|---|
h | 光标向左移动 | 移动光标用于可视模式下的数据块选择 |
j | 光标向下移动 | 移动光标用于可视模式下的数据块选择 |
k | 光标向上移动 | 移动光标用于可视模式下的数据块选择 |
l | 光标向右移动 | 移动光标用于可视模式下的数据块选择 |
d | 删除(剪切) | 删除可视模式下选中的数据块 |
y | 复制 | 复制可视模式下选中的数据块 |
p | 数据粘贴到光标的后边 | 粘贴在可视模式下复制或剪切的数据块 |
P | 数据粘贴到光标的前边 | 粘贴在可视模式下复制或剪切的数据块 |
通过可视模式进行代码注释
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 | 内核例程[非标准] |
#查询第一章的shell命令
man 1 cp
#查询第二章的系统函数 (如: read, write, open 等)
man 2 read
# 查询第三章的标准的库函数 (如: fread, fwrite, fopen 等)
man 3 fread
# 查询第五章的特殊的配置文件说明, 比如: /etc/passwd 或者 /etc/group
man 5 passwd
如果不写章节号,从第一章开始搜索查询的关键字,如果查询到了, 直接就结束了 比如当查询 printf 函数时不加章节号,就得不到我们我们想要的结果
当我们在vim的命令模式下使用man 1.找到要查看的函数,将光标放上去 2.输入 章节号 + K ,就可以了
三、编辑模式
如果要切换到编辑模式需要从命令模式通过快捷键来切换
快捷键 | 功能 |
---|---|
i | 从光标前边开始输入 |
a | 从光标的后边开始输入 |
o | 在光标下边创建新行,在新行中输入 |
s | 删除光标后边的字符,从删除位置开始输入 |
I | 从当前行行首开始输入 |
A | 从当前行行尾开始输入 |
O | 在光标上边创建新行,在新行中输入 |
S | 删除当前行,从当前行开始输入 |
编辑完成后,按 Esc 就可以回到命令模式
四、末行模式
1.模式切换
#命令模式切换到末行模式
:
#末行模式切换到命令模式
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: 垂直分屏
# 水平分屏
vim -o 文件1, 文件2, 文件3 ...
# 垂直分屏
vim -O 文件1, 文件2, 文件3 ...
5.行跳转
:行号 #即可跳转到指定行号
6.执行shell命令
#语法格式
:!shell命令
#eg:
:!ll #回车即可