移动和跳转
行首 ---- ^
行尾 ---- $
当页最后一行 ------- 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
---- 删除当前行并进入编辑模式