vim 替换

语法为 :[addr]s/源字符串/目的字符串/[option]
全局替换命令为::%s/源字符串/目的字符串/g
[addr] 表示检索范围,省略时表示当前行。
如:“1,20” :表示从第1行到20行;
“%” :表示整个文件,同“1,$”;
“. ,$” :从当前行到文件尾;
s : 表示替换操作
[option] : 表示操作类型
如:g 表示全局替换; 
c 表示进行确认
p 表示替代结果逐行显示(Ctrl + L恢复屏幕);
省略option时仅对每行第一个匹配串进行替换;
如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义
下面是一些例子:
#将That or this 换成 This or that
:%s/\(That\) or \(this\)/\u\2 or \l\1/
—- 
#将句尾的child换成children
:%s/child\([ ,.;!:?]\)/children\1/g
—-
#将mgi/r/abox换成mgi/r/asquare
:g/mg\([ira]\)box/s//mg//my\1square/g    <=>  :g/mg[ira]box/s/box/square/g
—-
#将多个空格换成一个空格
:%s/  */ /g
—-
#使用空格替换句号或者冒号后面的一个或者多个空格
:%s/\([:.]\)  */\1 /g
—-
#删除所有空行
:g/^$/d
—-
#删除所有的空白行和空行
:g/^[  ][  ]*$/d
—-
#在每行的开始插入两个空白
:%s/^/>  /
—-
#在接下来的6行末尾加入.
:.,5/$/./
—-
#颠倒文件的行序
:g/.*/m0O  <=> :g/^/m0O
—-
#寻找不是数字的开始行,并将其移到文件尾部
:g!/^[0-9]/m$ <=> g/^[^0-9]/m$
—-
#将文件的第12到17行内容复制10词放到当前文件的尾部
:1,10g/^/12,17t$
~~~~重复次数的作用
—-
#将chapter开始行下面的第二行的内容写道begin文件中
:g/^chapter/.+2w>>begin
—-
:/^part2/,/^part3/g/^chapter/.+2w>>begin
—-
:/^part2/,/^part3/g/^chapter/.+2w>>begin|+t$










字符串查找时,”\n” 是换行,”\r” 是回车,也就是经常会看到的 ^M(备注-1)。

字符串替换时,”\r” 是换行,’\n” 是空字符(0×00)。

(abc),(eftg),(mm)执行

:%s/\(),\)/\1\r/g 
结果
(abc),
(eftg),
(mm)


搜索
/word    从顶部往底部搜索word
?word    从底部往顶部搜索word 
/jo[ha]n       搜索john或joan
/\< the        搜索the或theatre 或then(只要是the开头就行)
/the\>         搜索the或breathe(只要是the结尾就行)
/\< the\>      只搜索the
/\< ....\>     搜索长度为4个字符的字符串
/\<fred\>      搜索fred,alfred 或者 frederick都不能匹配
/fred\|joe     搜fred或joe
/\<\d\d\d\d\>  搜索4位数字的字符串
/^\n\{3}       查找3个空行的地方
:bufdo /searchstr/    在所有打开的(缓冲区)文件中搜索searchstr
:bufdo %s/pattern/replace/ge | update   所有文件中替换
替换
:%s/old/new/g          用new替换文件中出现的所有old
:%s/old/new/gc         与上面这条的作用一样,只不过每替换一个就要确认一次
:2,35s/old/new/g       用new替换2到35行的new
:5,$s/old/new/g        替换4行之后所有old
:%s/^/hello/g          用hello替换所有行首,相当于在行首插入hello
:%s/$/Harry/g          在所有行末加入Harray
:%s/onward/forward/gi  用forward替换onward,忽略大小写
:%s/ *$//g         删除所有行末的空格
:%s/^ *//g         删除所有行首的空格
:g/string/d        删除所有出现有string的行
:v/string/d        删除所有不包含string的行
:s/Bill/Steve/     用Steve替换当前行首次出现的Bill
:s/Bill/Steve/g    用Steve替换当前行出现的所有Bill
:%s#<[^>]\+>##g    删除所有HTMl标签,保留文本
dit   保留当前行html标签,删除文本
:%s/^\(.*\)\n\1$/\1/    Delete lines which appears twice
Ctrl+a    递增当前光标出的数字
Ctrl+x    递减当前光标处的数字
ggVGg?    将全文转换为rot13码,这是一种简单暗号语Rot13,重复执行此命令回复原样
大小写
Vu    当前行转换为小写
VU    当前行转换为大写,当然对中文无效
g~~    大小写置换
vEU    选择性的转换为大小,从光标起始处到
vE~    也是将选中的大写转小写,小写转大写。
ggguG    全文小写,其实我们可以拆分3个命令gg/gu/来记忆
:set ignorecase    搜索时忽略大小写
1. 语法 :[range] s/search/replace/[flags] [count]也可以是
        :[range] s#search#replace#[flags] [count],%s指全局替换,“<”指html了向左的标签如"<body>"中的"<","[^>]"指非">"的单个字符,“<[^>]”可以匹配:"<h","<a",但是不能匹配"<>","\+>"指1到多个>字符。##相当于//,也就是替成空白。这条命令也可以简写为::%s/<[^>]*>//g


2.可能是vim的设置或版本问题,我另一电脑也没效果。我之后在查查


3. \(.*\)代表分组的意思,"\"是用来转义的,第一对()中的内容就是用\1表示,,如果还有第二对()就是,\2”。/^\(.*\)\n\1$“此命令中出现\1也就是说重复前面的^\(.*\)\n,这样就代表出现重复的行了,然后在用一行的内容来代替这两行。此命令要先执行:sort才生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值