第一阶
基础操作
i => 插入模式
x => 删除当前字符
a => 光标后插入
p => 粘贴
hjkl => 左下右上
:help <command>
插入
o => 光标前插入一行
O => 光标后插入一行
cw => 替换单词字符至单词结尾
移动
0 => 行首
$ => 行尾
^ => 第一个非空白字符
g_ => 最后一个非空白字符
第二阶
搜索
/string => 搜索string (使用 n 键查看下一个)
粘贴
P => 光标前粘贴
p => 光标后粘贴
撤销&重复
u => 撤销
<C-r> <==> . => 重复上个命令
文件操作
:e <path/to/file> => 打开一个文件
:w => 存盘
:saveas <path/to/file> => 另存为
:x <==> ZZ <==> :wq => 保存并退出
:bn <==> :n => 切换下一个文件
:bp =>切换上一个文件
第三阶
有点高级的命令
N<command> => 重复命令 N 次
NG <==> :N 移动到第 N 行
gg => 到文件首部
G => 到文件尾部
w/W => 下一个/上一个单词开头
e/E => 下一个/上一个单词词尾
% => 匹配括号
*/# => 匹配下一个/上一个单词
y => 拷贝( `y2/foo` 拷贝两个 `foo` 之间的字符串 )
<C-n> <==> <C-p> => 自动补全
v => 选择块
j => 将块连成一行
gU => 变大写
gu => 变小写
< 或 > => 左右缩进
= 自动缩进
f/F<Char> => 向后/向前至某一个字符
t/T<Char> => 向后/向前至某一个字符的前一个字符
替换
:s/old/new/g => 行内全局替换
:%s/old/new/g => 文件内全局替换
:%s/old//g => 删除所有匹配的内容
:g/string/d => 删除包含特定字符的行
第四阶
块操作
<action>a<object> => 选择包含了 `object`
<action>i<object> => 选择不包含 `object`
<C-v> => 块操作
0<C-v><C-d>I--[ESC] (在每一行的行首插入 `--` )
分屏
:split => 水平分屏
:vsplit => 垂直分屏
<C-w>h/j/k/l => 切换分屏
<C-w>_/| => 最大/最小尺寸
<C-w>+/- => 增加/减小尺寸