替换命令substitute可以用来查找跟替换操作。

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
range-命令作用范围(缺省的情况下,默认是当前行)
substitute-替换命令
pattern-正则表达式,想要替换的内容(如果为空,会引用上次的查找结果,类似于global中的pattern)
当然,如果我们非要想显示的使用上一个pattern,那我们可以使用<C-r>/,就会把上次的结果插入到命令行了。
substitute命令的使用,正式分两步,首先是写查找模式,然后是替换资源
string-要替换的内容
flags-命令标志位(g-每行所有匹配项都替换;c-替换的时候提示;e-屏蔽未搜索到错误信息)

这里我们简单说一下关于c提示。当我们选择这个替换标志位的时候,每要替换一个匹配项的时候,我们系统就是提示我们是否替换,主要有以下选择

.y-替换
.n-不替换
.q-退出替换
.l(lastA)-匹配完当前项以后退出
.a(all)-替换此处跟以后的所有匹配项
.<C-e>-向上滚动屏幕
.<C-y>-向下滚动屏幕
count-执行次数

例子如下

aaabbbccc
aaadddeee
bbbdddccc
abcdefghi
adbbbcdefaaf

特殊字符
\r-插入一个换行符
例如,你执行如下的命令

:,12s/aaa/\r/g

上面的结果就会变为

bbbccc

dddeee

也就是aaa变为了换行符

\t-插入一个制表符
\\-插入一个反斜杠
\-插入第一个子匹配(可以类推到9)
\(&)-插入匹配所有内容
~-使用上次调用substitute时候的替换string
\={vim script}-执行{vim script}表达式,并将返回结果作为替换string

假如有下面这种情况,我们想要把

afafafdafdeifahgf fafqedoafeiafaf
aaaaa

上面的aaaaa 替换成afafafdafdeifahgf,那我们要怎么办呢?这时候手动输入afafafdafdeifahgf可定很麻烦,而且还容易输错。这时候我们就可以使用寄存器来引用这个afafafdafdeifahgf
方法如下

.%s/aaaaa/<C-r>/g

这里你需要把afafafdafdeifahgf内容首先复制到0寄存器里面去。这个方法有点不好的就是,如果你0寄存器里面的内容过长的话,会导致显示不全等。
2.还是使用0寄存器,这次不同的是,我们完全可以通过命令行调用寄存器值的方法,来避免直接获取内容。

%s/aaaaa/\=@/g

g&-表示在全局范围内,执行上次的substetute

我们有时候会交换两个单词,我们可以怎么实现呢?
例如
aaa bbb ccc ddd
现在我们交换单词bbb ccc的位置
方法一:
剪切 粘贴 -可是模式下选中ccc以及前面的空格->d->光标停留在aaa的最后一个a上->p
方法二:
使用交换命令substetute

%s//\={"bbb":"ccc","ccc":"bbb"}[submatch(1)]/g

最新文章

  1. winfrom组件圆角
  2. BZOJ4570: [Scoi2016]妖怪
  3. Nodejs:fs模块 &amp; rimraf模块
  4. 面向对象的OOA、OOD、OOP
  5. Emule Xtreme Kid eD2K 设置
  6. timingFunction
  7. atitit js 开发工具 ide的代码结构显示(func list) outline总结
  8. 中级iOS开发面试题
  9. Java 程序检查远程服务器状态
  10. 14.5.5 Creating a File-Per-Table Tablespace Outside the Data Directory
  11. Javascript多线程引擎(九)
  12. SQL2008无法连接到.,及sa登录失败的总结
  13. [转]使用Openssl的AES加密算法
  14. 二叉树最大路径和-Binary Tree Maximum Path Sum
  15. java线程之线程同步
  16. java——初识
  17. java StringTokenizer
  18. 研究jenkins集成unittest成图
  19. HttpContext.Current并非无处不在
  20. 架构师养成记--20.netty的tcp拆包粘包问题

热门文章

  1. 1.C语言指针学习之外挂篇
  2. hdu 3292 No more tricks, Mr Nanguo
  3. day01-Python介绍,安装,idea
  4. 洛谷 P2486 [SDOI2011]染色 LCT
  5. PKU 2528 Mayor&#39;s posters
  6. POI0109 POD (最短路)
  7. 第6章8节《MonkeyRunner源代码剖析》Monkey原理分析-事件源-事件源概览-小结
  8. android-继承BaseAdapter--自己定义适配器,getView运行多次的解决方法
  9. LicManager系统对各license类型终端客户机器的监控
  10. vue8 生命周期