按esc进入命令模式
1.替换
:%s/str1/str2/g 替换每一行中所有str1为str2
:s/str1/str2/g 替换当前行中所有str1为str2
:n1,n2s/str1/str2/g 替换n1行到n2行中所有str1为str2
备注:去掉/g即表示只替换匹配到的第一个str1为str2
2.大小写转换
:%s/[a-z]/\U&/g U转换成大写
:%s/[A-Z]/\L&/g L转换成小写
:%s/\w*/\u&/g 每个单词的首字母转成大写
:%s/\w*/\U&/g 所有单词都全部转成大写
gggUG 全文大写
备注:l(小写L):单词首字母转成小写,L:单词全部转成大写,\w:匹配单词
3.添加
:%s/^/str 在每行行首添加str内容
:%s/$/str 在每行行尾添加str内容
:n1,n2s/^/str 在n1行到n2行首添加strneir
备注:^表示行首,$表示行尾
4. vi常用命令
?h,j,k,l :左、下、上、右移动(单字符移动)
?CTRL-B,CTRL-F :向上、下翻页
?w,b,e,ge :下个单词词首、上个单词词首、下个单词词尾、上个单词词尾
?W,B,E,gE :与上面功能类似,但不是以单词为分界,而是以空白为分界
?H,M,L :当前窗口的顶、中、尾部
?zt,zz,zb :按光标所在位置滚屏,顶部、中间、尾部
?f/F,t/T :f/F-字符,移动到指定字符(F是反向)、t/T-字符,移动到指定字符前(T是反向)
?; , . :;重复上次f/F,t/T命令,而,反方向重复f/F,t/T命令,.命令,重复上次修改动作
? :Normal模式下输入/,然后输入查找内容,可实现查找,按n/N,下/上命中的内容
?* :查找光标所有的单词
?r,R,~ :单字符替换、连续替换、更改大小写
?cw,cb :从光标处修改到单词结尾、从光标处修改到单词开头
?c$/C,c0,cc :从光标修改到本行末尾、从光标修改到本行开头、删除整行从头开始修改
?S,s :删除整行,从头开始修改、删除光标所在字符,然后插入
?yy,y^,y$,yw ,yG:复制当前行、光标到行头、光标到行尾、光标到单词结束、光标到档尾
?dd,d^,d$,dw,dG:剪切命令,类似如上y行为
?p/P :粘贴光标后、前
?$ :移动到光标所在行的行尾
?^:移动到光标所在行的行首