Vim 常用快捷键
一、移动光标
快捷键 | 功能 |
---|---|
h、j、k、l | 左、下、上、右 |
space/Backspace | 光标右 / 左移一个字符 |
Enter | 光标下移一行 |
) 、( | 光标移至句尾、 句首 |
}、{ | 光标移至段落开头、结尾 |
n、n- | 光标下移 、上移n行 |
n$ | 光标移至第n行尾 |
w | 跳到下一个字首,按标点或单词分割 |
W | 跳到下一个字首,长跳,如end-of-line被认为是一个字 |
e | 跳到下一个字尾 |
E | 跳到下一个字尾,长跳 |
b | 跳到上一个字 |
B | 跳到上一个字,长跳 |
0 | (注意是数字零)光标移至当前行首 |
$ | 跳至行尾 |
H | 光标移至屏幕顶行 |
M | 光标移至屏幕中间行 |
L | 光标移至屏幕行 |
^ | 跳至行首的第一个字符 |
gg | 跳至文首 |
G/shift+g | 调至文尾 |
5gg/5G | 光标移至第5行首 |
gd | 跳至当前光标所在的变量的声明处 |
fx | 在当前行中找x字符,找到了就跳转至 |
; | 重复上一个f命令,而不用重复的输入fx |
* | 查找光标所在处的单词,向下查找 |
# | 查找光标所在处的单词,向上查找 |
:0``或 :1` | 跳到文件第一行(底线命令模式) |
:$ | 跳到文件最后一行(底线命令模式) |
二、删除复制
快捷键 | 功能 |
---|---|
dd | 删除光标所在行 |
dw | 删除一个字(word) |
d/D | 删除到行末 |
x | 删除当前字符 |
X | 删除前一个字符 |
yy | 复制一行 |
yw | 复制一个字 |
y/D | 删除到行末 |
y/Y | 复制到行末 |
p | 粘贴粘贴板的内容到当前行的下面 |
P | 粘贴粘贴板的内容到当前行的上面 |
三、插入模式
快捷键 | 功能 |
---|---|
i | 从当前光标处进入插入模式 |
I | 进入插入模式,并置光标于行首 |
a | 追加模式,置光标于当前光标之后 |
A | 追加模式,置光标于行末 |
o | 在当前行之下新加一行,并进入插入模式 |
O | 在当前行之上新加一行,并进入插入模式 |
r | 替换当前字符 |
R | 替换当前字符及其后的字符,直至按ESC键 |
s | 从当前光标位置处开始,以输入的文本替代指定数目的字符 |
Esc | 退出插入模式 |
四、编辑
快捷键 | 功能 |
---|---|
J | 将下一行和当前行连接为一行 |
cc | 删除当前行并进入编辑模式 |
cw | 删除当前字,并进入编辑模式 |
c$ | 擦除从当前位置至行末的内容,并进入编辑模式 |
s | 删除当前字符并进入编辑模式 |
S | 删除光标所在行并进入编辑模式 |
xp | 交换当前字符和下一个字符 |
u | 撤销 |
ctrl+r | 重做 |
~ | 切换大小写,当前字符 |
>> | 将当前行右移一个单位 |
<< | 将当前行左移一个单位(一个tab符) |
== | 自动缩进当前行 |
:set nu | 添加行号 |
gg=G | 自动排版 |
-o[n] | 以水平分屏的方式打开多个文件 |
-O[n] | 以垂直分屏的方式打开多个文件 |
五、查找替换
快捷键 | 功能 |
---|---|
/pattern | 向后搜索字符串pattern |
?pattern | 向前搜索字符串pattern |
“\c” | 忽略大小写 |
“\C” | 大小写敏感 |
n | 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个) |
N | 上一个匹配(同上) |
:%s/old/new/g | 搜索整个文件,将所有的old替换为new |
:%s/old/new/gc | 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换 |
六、保存
快捷键 | 功能 |
---|---|
:w | 保存文件但不退出vim |
:w file | 将修改另外保存到file中,不退出vim |
:w! | 强制保存文件,但不退出vim |
:wq | 保存修改并退出 |
:wq! | 强制保存文件,并退出vim |
:e! | 放弃所有修改,从上次保存文件开始再编辑 |
:q | 退出,如果对缓冲区进行过修改,则会提示 |
:q! | 强制退出,放弃修改 |
七、可视化
快捷键 | 功能 |
---|---|
v | 按字符选择 |
V | 按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。 |
CTRL+v | 按块选择 |
八、屏幕翻滚
命令 | 描述 |
---|---|
Ctrl e | 移动页面 |
Ctrl u | 向文件首翻半屏 |
Ctrl d | 向文件尾翻半屏 |
Ctrl f | 向文件尾翻一屏 |
Ctrl b | 向文件首翻一屏 |
nz | 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部. |
九、多标签编辑
快捷键 | 功能 |
---|---|
:tabedit file | 在新标签中打开文件file |
:tab split file | 在新标签中打开文件file |
:tabp | 切换到前一个标签 |
:tabn | 切换到后一个标签 |
:tabc | 关闭当前标签 |
:tabo | 关闭其他标签 |
gt | 到下一个tab |
gT | 到上一个tab |
0gt | 跳到第一个tab |
5gt | 跳到第五个tab |
十、多文件编辑
vim file1… | 同时打开多个文件 |
:args | 显示当前编辑文件 |
:next | 切换到下个文件 |
:prev | 切换到前个文件 |
:next! | 不保存当前编辑文件并切换到下个文件 |
:prev! | 不保存当前编辑文件并切换到上个文件 |
:wnext | 保存当前编辑文件并切换到下个文件 |
:wprev | 保存当前编辑文件并切换到上个文件 |
:first | 定位首文件 |
:last | 定位尾文件 |
ctrl+^ | 快速在最近打开的两个文件间切换 |
:split[sp] | 把当前文件水平分割 |
:split file | 把当前窗口水平分割, file |
:vsplit[vsp] file | 把当前窗口垂直分割, file |
:new file | 同split 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 | 跳转到最底下的窗口 |