Vim帮助文档的快键键是:vimtutor
普通模式(Normal mode)
vim打开进入的就是普通模式
vim从其他模式进入普通模式按ESC键,可以多次按ESC
保存退出:shift zz
代码格式优化:shift g
光标的移动:
H:←
J:↓
K:↑
L:→
行首:0,^:移动到行首的非空白字符
行尾:$, g_:移动到行尾的非空白字符
头部:gg
尾部:G
一行中的单词移动:
w/W移动到下一个word/WORD开头
e/E移动到下一个word/WORD结尾
b/B移动到上一个word/WORD开头
word指的是以非空白符分割的单词
WORD指的是以空白符分割的单词
一行中的搜索的字符移动
f{char} 移动到char字符上,F是从行尾往前搜索
t{char} 移动到char字符前,T是从行尾往前搜索
分号(;)向后继续搜索
逗号(,)向前继续搜索
当前行向下移动N行,N+Enter
定位:行数 + G
H:移动屏幕的顶部
M:移动到屏幕的中间
L:移动到屏幕的底部
ctrl + u:向上翻页
ctrl + f:向下翻页
zz:让光标的所在行成为屏幕的中间行
删除操作
删除光标前一个字符:X
删除光标后的一个字符:x
删除光标后的一单词:dw
删除光标前的字符串:d0
删除光标后的字符串:d$ 或者 D
删除当前行:dd
删除当前光标行下的多行:行数 + dd
删除当前光标后的字符至指定的字符:dt + 指定的字符
撤销:u
反撤销:ctrl + r
复制:
一行:yy
多行:行数 + yy
粘贴:
小p粘贴到光标的下一行
大P粘贴到光标的上一行
粘贴系统粘贴板中的内容:"+p
匹配:
*:向前匹配光标所在的单词
#:向后匹配光标所在的单词
插入模式(Insert mode)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
vim从普通模式切换到插入模式 a:从光标后开始插入 A:从光标所在行的行尾插入 i:从光标前开始插入 I:从光标所在行的行首插入 o:光标下面创建新的一行 O:光标上面创建新的一行 s:删除光标盖住的字符 4s:删除4个字符,并进入插入模式 S:删除光标所在的行 gi:从普通模式快速切换到上次编辑的位置,并进入插入模式 r:替换单个字符,并进入插入模式 R:一直替换字符 cw:删除单词,进入插入模式 C:删除一行进入插入模式 ct+字符:删除到指定的字符,并进入插入模式,和dt+字符用法相似 删除操作: 删除光标前一个字符:ctrl + h 删除光标前一个单词:ctrl + w 删除光标所在当前行:ctrl + u
命令行模式(Command line mode)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
进入命令模式的方式
执行命令: :键
搜索命令:/和?键
过滤命令:!键
注:vim执行完命令行就会返回普通模式
保存退出:wq == x
保存不退出:w
退出:q
退出不保存:q
:e!: 放弃修改,重新加载
:e file 在同一个vim窗口加载file文件
:set paste 原格式粘贴
替换:
substitute 命令允许我们查找并且替换掉文本,并且支持正则式
:[range]s[ubstitute]/{pattern}/{string}/[flags]
range 表示范围比如:10,20表示10-20行,%表示全部
pattern是要替换的模式,string是替换后文本
flags:
g(global)表示全局范围内执行
c(confirm)表示确认,可以确认或者拒绝修改
n(number)报告匹配到的次数而不替换,可以用来查询匹配次数
案例:
替换光标所在行:
:s/old/new/gc
替换多行:
:n1,n2 s/old/new/gc
n1,n2表示行数
替换当前文档:
:% s/old/new/gc
统计单词的个数:
:% s/word//n
匹配完成的单词:
:% s/\<word\>/new/g
分屏:
水平分屏:sp
垂直分屏:vsp
退出:q
分屏之间切换:ctrl + ww
退出所有:qall
保存所有:wall
退出保存所有:wqall
分屏另一个文件:sp/vsp filename
同时给多个文件水平分屏:vim -o[filenumber] filenames
同时给多个文件垂直分屏:vim -O[filenumber] filenames
可视模式(Visual mode)
1 2 3 4 5 6 7 8 9 10 11
调用的快捷键:v 复制:y 删除:d 粘贴: 小p:粘贴到光标的后面 大P:粘贴到光标的前面 替换: r:替换光标覆盖的当前字符(一个) R:替换光标覆盖的当前字符串(多个) 行之间的选择:使用大v进入