Vim常用快捷键整理
文章目录
注意:本文中的记忆方法只是参考,非官方解释
1. 移动光标
按键 | 功能 | 记忆方法 |
---|---|---|
h | 光标向左 | 方向键最左边一个 |
j | 光标向下 | j 的长角向下 |
k | 光标向上 | k 的长角向上 |
l | 光标向右 | 方向键最右边一个 |
ctrl + f | 上翻一页 | f 表示 front, ctrl 表示翻页 |
ctrl + b | 下翻一页 | b 表示 back,ctrl 表示翻页 |
ctrl + u | 上翻半页 | u 表示 up,ctrl 表示翻页 |
ctrl + d | 下翻半页 | d 表示 down,ctrl 表示翻页 |
w | 跳到下一个字首,按标点或空格分割 | word |
W | 长跳,只按空格分割 | WORD, 大写跳得快 |
e | 跳到下一个字尾,按标点或空格分割 | end |
E | 长跳,只按空格分割 | END, 大写跳得快 |
b | 跳到上一个字 | back |
B | 跳到上一个字,长跳 | BACK,大写跳得快 |
0 | 跳至行首,不管有无缩进,跳到第0个字符 | 0表示行首,开头 |
^ | 跳至行首的第一个字符,只到内容的第一个 | 帽子表示第一个 |
$ | 跳至行尾 | 结束的时候要付费,美元符表示行尾 |
gg | 跳至文首 | 小写表示开头,一个g表示gun,两个g又gun回来 |
G | 跳至文末那一行 | 大写表示末尾,gun |
5gg/5G | 跳到第5行 | 数字表示行号,gun gun / Gun |
gd | 跳至当前光标所在的变量的声明处 | gun去define |
fx | 在当前行中找x字符,找到了就跳转,否则不跳 | find x |
; | 重复上一个f命令 | 分号,重复find |
* | 查找光标所在处的单词,向下查找 | 星号匹配 向下 |
# | 查找光标所在处的单词,向上查找 | 井号匹配 向上 |
2. 删除复制
按键 | 功能 | 记忆方法 |
---|---|---|
dd | 删除光标所在行 | delete delete 删除一行 |
dw | 删除一个字 | delete word |
d$ / D | 删除到行末 | Delete 大写删至行末 |
x | 删除当前字符 | x是删除,小写删当前 |
X | 删除前一个字符 | 大写删前者 |
yy | 复制一行 | y是复制(跟在x后面), 两个y复制整行 |
yw | 复制一个字 | yw表示复制一个字 |
y/Y | 复制到行末 | y/Y表示复制到行末 |
p | 粘贴粘贴板的内容到当前行的下面 | paste |
P | 粘贴粘贴板的内容到当前行的上面 | Paste,大写往上一行粘 |
3. 插入模式
按键 | 功能 | 记忆方法 |
---|---|---|
i | 从光标当前位置插入 | insert |
I | 进入插入模式,并置光标于行首 | 大写从头插入 |
a | 追加模式,置光标于当前光标之后 | add |
A | 追加模式,置光标于行末 | 大写加到行末 |
o | 在当前行之下新加一行,并进入插入模式 | open a new line |
O | 在当前行之上新加一行,并进入插入模式 | 大写表示在本行之上插入 |
ESC | 退出插入模式 | 退出模式基本都一样 |
4. 编辑
按键 | 功能 | 记忆方法 |
---|---|---|
J | 将下一行和当前行连接为一行 | join |
cc | 删除当前行并进入编辑模式 | clean clear |
cw | 删除当前字,并进入编辑模式 | clear word |
c$ | 擦除从当前位置至行末的内容,并进入编辑模式 | clear to 行尾 |
s | 删除当前字符并进入编辑模式 | strike out |
S | 删除光标所在行并进入编辑模式 | 大写表示行删除 |
xp | 交换当前字符和下一个字符 | x是剪切,p是粘贴,so你懂的 |
u | 撤销 | Undo |
ctrl + r | 重做 | re-do |
~ | 切换大小 写,当前字符 | 取反符号,切换大小写 |
>> | 将当前行右移一个单位 | 右移符号 |
<< | 将当前行左移一个单位 | 左移符号 |
== | 自动缩进当前行 | 等等vim自动缩进 |
5. 查找替换
按键 | 功能 | 记忆方法 |
---|---|---|
/pattern | 向后搜索字符串pattern | /向后查询 |
?pattern | 向前搜索字符串pattern | ?向前查询,跟/ 在同一个键位上 |
“\c” | 忽略大小写,用法是写在pattern的最前面/\chello | character c 小写表示忽略大小写 |
“\C” | 大小写敏感,用法是写在pattern的最前面,如/\Chello | C大写表示不忽略大小写 |
n | 下一个匹配(如果是/搜索,则是向下的下一个,如果是?搜索,则是向上的下一个 | next |
N | 上一个匹配(同上) | Next,大写表示反向 |
:%s/old/new/g | 搜索整个文件,将所有的old替换为new | %s substitute g表示末尾 |
:%s/old/new/gc | 搜索整个文件,将所有的old替换为new,每次替换都要人工确认 | c表示 command |
6. 退出编辑器
按键 | 功能 | 记忆方法 |
---|---|---|
:w | 将缓冲区写入文件,即保存修改 | 存wenjian |
:wq | 保存修改并退出 | 存wenjian & quit |
:x | 保存修改并退出 | exit safely |
:q | 退出,如果对缓冲区进行过修改,则会提示 | quit |
:q! | 强制退出,放弃修改 | quit!!!不用拦我 |
7. 多文件编辑
按键 | 功能 | 记忆方法 |
---|---|---|
vim file1, file2, … | 同时打开多个文件 | 一个逗号 多打开一个 |
:args | 显示当前编辑的文件 | 参数查看,也就是状态查看 |
:next | 切换到下一个文件 | 抬走,下一个 |
:prev | 切换到上一个文件 | Previous,上一个 |
:next! | 不保存当前编辑文件并切换到下一个文件 | 下一个! |
:prev! | 不保存当前编辑文件并切换到上一个文件 | 上一个! |
:wnext | 保存当前编辑文件并切换到下个文件 | wenjian 下一个 |
:wprev | 保存当前编辑文件并切换到上个文件 | wenjian 上一个 |
:first | 定位首文件 | 第一个 |
:last | 定位尾文件 | 最后一个 |
ctrl + ^ | 快速在最近打开的两个文件间切换 | 帽子切换 |
:split[sp] | 把当前文件水平分割 | split分割 |
:split file | 把当前窗口水平分割, file | 分割 file |
:vsplit[vsp] file | 把当前窗口水平分割,file | 垂直 分割 file |
:new file | 同split file | 新打开一个file |
:close | 关闭当前窗口 | 关闭 |
:only | 只显示当前窗口,关闭所有其他的窗口 | 只保留当前这一个界面 |
:all | 打开所有的窗口 | 所有 |
:vertical all | 打开所有的窗口,垂直打开 | 垂直 所有 |
:qall | 对所有的窗口执行:q操作 | 退出 所有 |
:qall! | 对所有的窗口执行:q!操作 | 退出 所有! |
:wall | 对所有的窗口执行:w操作 | 保存 所有 |
:wqall | 对所有的窗口执行:wq操作 | 保存 退出 所有 |
ctrl - w h | 跳转到左边的窗口 | 移动向左 |
ctrl - w j | 跳转到下边的窗口 | 移动向下 |
ctrl - w k | 跳转到上边的窗口 | 移动向上 |
ctrl - w l | 跳转到右边的窗口 | 移动向右 |
ctrl - w t | 跳转到最顶上的窗口 | 移动到最顶部 |
ctrl - w b | 跳转到最底下的窗口 | 移动到最底部 |
8. 多标签编辑
按键 | 功能 | 记忆方法 |
---|---|---|
:tabedit file | 在新标签中打开文件file | tab 标签 edit 编辑 |
:tab split file | 在新标签中打开文件file | tab 标签 split 分离 |
:tabp | 切换到前一个标签 | tab 标签 p previous 前一个 |
:tabn | 切换到后一个标签 | tab 标签 n next 后一个 |
:tabc | 关闭当前标签 | tab 标签 c close关闭 |
:tabo | 关闭其他标签 | tab 标签 o other 其他 |
gt | 到下一个tab | go to tab |
gT | 到上一个tab | 大写表示反向 |
0gt | 跳到第一个tab | 0表示首个 |
5gt | 跳到第五个tab | 5表示第五个 |
9. 执行shell命令
按键 | 功能 | 记忆方法 |
---|---|---|
命令模式下:sh | 进入shell | shell |
命令模式下exit或ctrl + D | 返回VIM | 退出 |
!command | 执行一条命令,命令完成后立即返回VIM | !惊叹号,中断临时运行 |
ctrl + Z / fg | 返回shell / 返回VIM编辑 | 组合使用,file go 返回 |
:!make -> | 直接在当前目录下运行make指令 | !编译 |
10. VIM启动时分屏显示
按键 | 功能 | 记忆方法 |
---|---|---|
vim -o t1.txt, t2.txt, … | 以水平分屏的方式打开多个文件 | -open 同时打开多个, 小写表示水平方向展开 |
vim -O t1.txt, t2.txt, … | 以垂直分屏的方式打开多个文件 | -Open同时打开多个,大写表示垂直方向展开 |
11. 格式化代码(自动缩进)
按键 | 功能 | 记忆方法 |
---|---|---|
编辑模式下直接ESC后输入gg=G | 将代码全部格式化 | gg 到达文件最开始 = 要求缩进 G 直到文件尾 |
编辑模式下直接ESC后输入nG=mG | 将第n行到第m行的代码格式化 | nG 第n行 = 要求缩进 mG 直到第m行 |
12. 自动注释和取消注释
以C++和Python为例.(Ubuntu系统)
连续注释行:
指令的格式应为:起始行, 结束行s/要替换的字符/替换后的字符/g
如:
C++源文件中注释掉6~18行,指令应为:
:6,18s/^/\/\//g
其中\/\/
是//的转义表示.
Python源文件中注释掉6~18行,指令应为:
:6,18s/^/#/g
取消注释行:
命令跟上述相反,要互换替换字符和被替换字符
C++源文件中反注释掉6~18行,指令应为:
:6,18s/^\/\///g
Python源文件中反注释掉6~18行,指令应为:
:6,18s/^#//g