简明教程
模式类型
- Normal: 文件移动;
- Insert: 插入文本;
- Replace: 替换文本;
- Visual: 选择文本;
- Command: 运行命令;
模式切换
- 默认模式为 Normal;
- 任意默认使用
ESC 返回 Normal;
- 普通模式使用快捷键进入其他模式;
i: Insert;
R: Replace;
v: Visual;
V: Visual (line);
Ctrl + V: Visual(block);
:: Command;
- 推荐将
Caps 映射为 ESC;
缓冲区, 窗口和标签
- 一个文件对应一个缓冲区;
- 一个 Vim 具有多个标签;
- 一个标签具有多个窗口 (分屏);
- 一个窗口显示一个缓冲区;
常用命令
Command
- 操作文件;
- 关闭: : q;
- 保存: : w;
- 关闭并保存: : wq/: x;
- 打开缓冲区: :
e{fileName};
- 显示缓冲区列表: ls;
- 强制操作: 以上操作之前添加 !;
- 分割窗口;
- 分割: sp/vsp;
- 改变活动窗口:
<Ctrl + W><hjkl>;
- 互换分屏窗口:
<Ctrl + W>, r;
- 关闭分屏窗口;
- 关闭当前窗口:
<Ctrl + W>, c;
- 保留当前分屏: : only;
- 关闭当前分屏: : hide;
Normal
- 基本移动: 左下上右 (hjkl)
- 单词;
- w: 下一单词;
- b: 单词开头;
- e: 单词结尾;
- *: 光标当前单词的下一个出现位置;
- %: 跳转相应 (, {, [;
- 行;
- 0: 行开头;
- ^: 第一个非空白字符;
- $: 行结尾;
- 屏幕;
- H: 屏幕顶部;
- M: 屏幕中部;
- L: 屏幕底部;
- 滚动;
- ctrl-u: 向上滚动半屏;
- ctrl-d: 向下滚动半屏;
- zz: 当前位置设置为屏幕中间;
- 文件;
- 行号;
- :
{number}<CR>/:{number}G: 移动至第 number 行;
- 查找;
f{character}: 当前行第一个 character;
- fa: 当前行 a 下一个出现位置;
- fa; : a 下一个出现位置;
- fa, : a 上一个出现位置;
- 3fa: 当前行 a 第三次出现位置;
- t
{character}: 当前行第一个 character 的前一个字符;
- 插入: 进入 Insert 模式;
- i: 当前光标插入;
- o: 当前行上方插入;
- O: 当前行下方插入;
- a: 光标后插入;
- 替换:
c{motion};
- cw: 替换光标至单词末尾内容;
- c$: 替换光标至行尾内容;
- c0: 替换光标至行首内容;
- s: 替换字符, 等同于 cl;
- 删除:
d{motion};
- dw/d$/d0 (删除单词/至行尾/至行首);
- dd: 删除并赋值当前行;
dt{character}: 删除至 character;
- x: 删除字符, 等同于 dl;
- 复制:
y{motion};
- 粘贴;
- u: 撤销;
- 提示
Ctrl + n;
- 重复执行上一条命令: . ;
- 重复执行特定动作 N 次;
- 3w: 向前移动 3 个单词
- 5j: 向下移动 5 行;
- 7dw: 删除 7 个单词;
- 配合移动指定对应命令;
<start position><command><end position>;
Visual
行选中
- Visual 模式使用;
<action>i<object> 或 <action>a<object>;
矩形块
0<Ctrl-v><Move><action>[ESC];
- 0: 跳转至当前行第一列;
<Ctrl-v>: 块选择;
<Move>: 移动块;
<action>: 插入;
键位图
