Insert(插入)模式
插入模式下 vim 可以直接编辑, 和其他编辑器一样
使用
i(insert)进入编辑模式, 开始输入文字i 表示(insert), a(append), o(open a line below)
使用
Esc可以返回 normal 模式。使用:wq保存退出
Command(命令)模式
Normal 模式下输入 : 之后执行命令, 比如保存退出 :wq
保存:
:w, 退出::q左右分屏:
:vs(vertical split), 上下分屏::sp(split)全局替换:
:% s/foo/bar/g(s 表示替换, g 表示全局)设置行号:
:set nu
Visual(可视)模式
Visual 模式一般用来块状选择文本
Normal 模式下使用
v进入 visual 选择使用
V选择行使用
ctrl+v进行方块选择选择文本后使用
d可删除, 使用y复制, 使用p粘贴
插入模式编辑
如何快速纠错
ctrl+h删除光标上一个字符,ctrl+w删除光标上一个单词,ctrl+u删除当前行, 这几个快捷键还可用于终端
快速切换 insert 和 normal 模式
使用
ctrl+c代替 Esc(可能会中断某些插件), 或者ctrl+[gi快速跳转到最后一次编辑的地方并进入插入模式
vim 的快速移动
单词间移动
h(左), j(下), k(上), l(右)
w/W移到下一个 word/WORD 开头。e/E移到下一个 word/WORD 尾b/B回到上一个 word/WORD 开头word 指的是以
非空白分割的单词, WORD 是指以空白符分割的单词
行间搜索移动
同一行快速移动的方式其实是搜索一个字符并且移动到该字符
使用
f{char}可以移动到 char 字符上,t{char}移动到 char 的前一个字符如果第一次没搜到, 可以用分号(;)/逗号(,)继续搜该行下一个/上一个
大写的
F表示反过来搜前面的字符
水平移动
0移动到行首的第一个字符,^移动到第一个非空白字符$移动到行尾,g_移动到行尾非空白字符
垂直移动 - 在句子(sentence)和段落(paragraph)间移动
使用括号
()在句子间移动使用
{}在段落之间移动可以使用
easy-motion插件移动, 免去记忆命令
页面移动
gg/G移动到文件开头和结尾, 可以使用ctrl+o快速返回H/M/L跳转到屏幕的开头(Head), 中间(Middle)和结尾(Lower)ctrl+u向上翻页(upword),ctrl+f向下翻页(forward)。zz把屏幕置中间
增删改查
删除一个字符或者单词
在 normal 模式下使用
x快速删除一个字符使用
d(delete)配合文本对象快速删除一个单词daw(d around word)d 和 x 都可以搭配数字来执行多次, 比如
2dd表示删除 2 行,4x表示删除 4 个字符
快速修改
常用有 3 个,
r(replace),c(change),s(substitute)normal 模式下使用
r可以替换一个字符。s删除并进入插入模式, 可配合数字使用使用
c配合文本对象, 可以快速进行修改, 如果想修改一个单词可以使用cawR: 可以不断地替换后面的字符S: 删除整行并且进入插入模式
查询
使用
/或者?进行前向或者反向搜索使用
n/N跳转到下一个或者上一个匹配使用
*或者#进行当前单词的前向和后向匹配