Guide
1. vimtutor
VIM Tutor - Version 1.7
vim自带的交互式教程, 输入vimtutor开始
2. 移动光标
| 快捷键 |
说明 |
h |
左 |
j |
下 |
k |
上 |
l |
右 |
Ctrl+Y |
向下滚一行 |
Ctrl+E |
向上滚一行 |
Ctrl+D |
向下滚半屏 |
Ctrl+U |
向上滚半屏 |
w |
跳到下一单词开头 |
b |
跳到上一单词开头 |
e |
跳到下一单词结尾 |
2w |
跳两个单词 |
0 |
移动到行首 |
^ |
移动到非空格行首 |
$ |
移动到行尾 |
Ctrl+G |
显示当前在文件中的行数 |
G |
移动到最后一行行首 |
gg |
移动到第一行行首 |
Ctrl+O |
移动到前一光标位置(Old position) |
Ctrl+I |
移动到后一光标位置(In position) |
:100 |
跳转到第100行 |
fH |
当前行查找H, 并移动光标到H |
tH |
当前行查找H, 并移动光标到H前 |
'< |
跳转到上一次可视选择的起始位置 |
'> |
跳转到上一次可视选择的结束位置 |
'[ |
跳转到粘贴的超始位置 |
'] |
跳转到粘贴的结束位置 |
'^ |
上一次插入模式开始的位置 |
'. |
上一次修改的位置 |
o |
在选区的开头和结尾间切换位置(当选中文本时使用) |
3. 文本编辑
| 快捷键 |
说明 |
x |
删除光标后一个字符 |
i |
在光标位置开始插入 |
a |
在光标位置后一个字符位置开始插入 |
c |
剪切并进入插入模式 |
选文本后按d |
仅删除 |
选文本后按s |
删除并进入插入模式 |
选文本后按x |
仅剪切 |
A |
从当前行末非空字符处开始插入 |
I |
从当前行首非空字符处开始插入 |
dw |
删除一个单词,包括单词后的空格 |
de |
删除一个单词,不包括单词后的空格 |
d$ |
删除到行尾,包含换行符 |
D |
删除到行尾,不包含换行符 |
2dw |
删除2个单词 |
dd |
删除当前行 |
u |
撤消上一修改 |
U |
撤消当前行的所有修改 |
Ctrl+R |
重新执行上一撤消的修改 |
P |
在光标前粘贴 |
p |
在光标后粘贴 |
rx |
替换一个字符 |
Rxxx |
替换多个字符 |
ce |
剪切到词尾 |
c$ |
剪切到行尾,包含换行符 |
C |
剪切到行尾,不包含换行符 |
ci( |
修改括号内文本(change inner) |
dap |
删除整个段落(delete around paragraph) |
% |
在匹配的两个括号间跳转,支持(), [], {} |
o |
在下方插入新行 |
O |
在上方插入新行 |
:s/old/new |
替换当前行第一个old为new |
:s/old/new/g |
替换当前行所有old为new |
:s/\<old\>/new/g |
替换独立单词old为new |
:m,ns/old/new |
替换第m行至第n行,每行第一个old为new |
:m,ns/old/new/g |
替换第m行至第n行,所有的old为new |
:%s/old/new |
替换文件中每一行第一个old为new |
:%s/old/new/g |
替换文件中所有的old为new |
:'<,'>s/\%Vold/new/g |
替换指定范围内的old为new(使用"\%V") |
:'<,'>norm I# |
在每行开头插入#(用于每行开头不对齐时) |
:'<,'>norm A// |
在每行末尾追加//(用于每行结尾不对齐时) |
:'<,'>norm ^xx |
删除开头的两个字符 |
4. 字符串搜索
| 快捷键 |
说明 |
/str |
向后搜索并跳转到下一字符串为str的位置 |
/str n |
多次按n, 执行多次向后搜索 |
N |
多次按 N, 执行多次向前搜索 |
:set ic |
忽略大小写(Ignore case) |
:set noic |
不忽略大小写 |
:set hls |
高亮显示匹配结果(Highlight search) |
:set nohls |
不高亮显示 |
:set is |
实时搜索输入字符的匹配结果(Incremental search) |
:set nois |
不实时搜索 |
5. 文件寄存器
| 快捷键 |
说明 |
:!ls -d */ |
执行外部命令 ls -d */ |
:!dir |
执行外部命令 dir |
:w |
保存 |
:q! |
强制退出, 不保存修改 |
:wq! |
强制退出, 保存修改 |
:r file.txt |
插入文件内容 |
:r !ls |
插入外部命令的输出 |
:e file.txt |
打开文件 |
:e! |
重新加载当前文件 |
:call rename('old.txt', 'new.txt') |
重命名文件 |
:saveas file.txt |
另存为 |
:let @+=@0 |
将寄存器"0内容复制到系统剪切板 |
:reg |
查看所有寄存器的内容 |
:reg 0 |
查看"0寄存器的内容 |
6. 窗口操作
| 快捷键 |
说明 |
:new |
创建水平分割窗口 |
:vnew |
创建垂直分割窗口 |
:split |
复制水平分割窗口 |
:vsplit |
复制垂直分割窗口 |
Ctrl+W W |
在不同窗口间切换 |
Ctrl+W H |
切换到左边的窗口 |
Ctrl+W L |
切换到右边的窗口 |
Ctrl+W J |
切换到下边的窗口 |
Ctrl+W K |
切换到上边的窗口 |
7. 选择区域
| 快捷键 |
说明 |
gv |
重新选中上次的区域 |
vip |
选取当前段落 |
vi( |
选择括号其中内容, 不包括本身 |
vi[ |
选择括号其中内容, 不包括本身 |
vi{ |
选择括号其中内容, 不包括本身 |
va( |
包括括号本身 |
va[ |
包括括号本身 |
va{ |
包括括号本身 |
viw |
选择单词 |
vaw |
选择单词和后面的空格 |
viW |
选择一整句(用空格分隔) |
vaW |
选择一整句和后面的空格 |
vit |
选择一个标签内() |
vat |
包括标签本身 |
8. 宏录制
| 快捷键 |
说明 |
qa |
开始录制宏到寄存器a中 |
q |
停止录制 |
@a |
执行一次寄存器a中的宏 |
@@ |
重复最近一次执行的宏 |
10@a |
重复执行宏a 10次 |
9. 辅助命令
| 快捷键 |
说明 |
Ctrl+D |
命令行模式下显示补全命令列表;插入模式下减少缩进(增加为Ctrl+T);普通模式下向下滚半屏 |
:scriptnames |
列出vim加载的脚本 |
:source ~/.vimrc |
手动加载配置文件 |
gg=G |
全文自动缩进 |
:Ctrl+P |
向上浏览历史命令 |
:Ctrl+N |
向下浏览历史命令 |
:Ctrl+A |
光标下的数字增加1(先按数字x, 再按Ctrl+A可增加步长x) |
~ |
光标下的字母在大小写间切换 |
:Ctrl+X |
光标下的数字减小1(先按数字x, 再按Ctrl+X可减小步长x) |
u |
转小写 |
U |
转大写 |
. |
重复执行上一次的命令 |
J |
合并选择的行 |
'<,'>g/^\s*$/d |
删除空行 |
10. 帮助
| 快捷键 |
说明 |
:help |
进入帮助文档 |
:help w |
查看w命令的帮助 |
:help c_CTRL-D |
查看CTRL-D的帮助 |
:help insert-index |
查看插入模式索引 |
:help user-manual |
查看用户手册 |
11. References
- https://gitlab.com/wsdjeg/vim-galore-zh_cn
vim-galore-zh_cn.7z