移动和跳转
行首 ---- ^
行尾 ---- $
当页最后一行 ------- G
当页第一行 --------- gg
ma ---- 把当前位置标记为标签a
`a ---- 跳转到标签a的位置
fx ---- 移动到当前行的x字符位置
Fx ---- 反向移动到当前行的x字符位置
查找和替换
:[range]s/old/new/[flags]
range : 替换的范围
% : 全文
1,10 : 1-10行
flags :
c : comfirm , 每次替换前进行确认
g : global , 整行中所有匹配的内容都替换。不加g默认只替换每行的第一个匹配内容
i : ignore , 忽略大小写
:%s/old/new/g ----- 所有行替换
:%s/old/new/gc ---- 所有行替换,替换前确认
:1,10s/old/new/---- 1-10行替换
:10s/old/new/ ----- 第10行匹配的第一个内容进行替换
:.,.+5s/old/new/g ---- 从当前行及后续5行内进行替换
正则表达式替换
:%s/\s+$//g ---- 删除所有行尾的空格
:%s/^\s*//g ---- 删除所有行首的空格
:%s/^$//g ----- 删除空行
:%s/^\(.*\)=\(.*\)/"\1" : "\2"/g --- 将类似如下格式的文本进行替换
key=value
替换后
"key" : "value"
^\(.*\)=\(.*\)$
^匹配行首,然后是任意多个字符一直到=为止,为一组,这一组用()包起来,但是在vi中需要用\转义。继续任意多个字符一直到行尾为一组。
"\1" : "\2"
首先添加一个",然后放第一组的内容,\1是刚刚匹配的第一个()中的内容
~ ---- 切换当前字符的大小写
r --- 替换当前字符
R --- 从当前字符位置开始替换
插入和删除
D ---- 从当前位置删除到行尾
cc --- 删除一行并进入编辑模式
s ---- 删除当前字符并进入编辑模式
S ---- 删除当前行并进入编辑模式