本文出自   http://blog.csdn.net/shuangde800

本文是在学习《使用vi编辑器, Lamb & Robbins编著》时在所记的笔记。

本文内容:
基本全局替换
确认替换
上下文相关替换
本文约定:
$ + 命令 表示在普通的bash的命令行下
:  + 命令 表示在vim的ex(命令)模式, 按"Ctrl" + ":" 进入

------------------------------------------------------------------------------------------------

替换命令的基本语法

在全局替换中,ex编辑器使用指定的字符模式对文件中的每行进行检查。在所有行中发现模式的位置,ex使用新字符串来替换模式。
全局替换真正使用的是两个ex命令是 :g(global全局)和:s(switch替换)。
替换命令的语法如下:
:s / old / new /  
这将把当前中模式old的第一次出现修改为new。  /(斜杆)是命令不同部分之间的分隔符(当斜杆为该行的最后一个字符时,可不写)
下面这种形式的替换命令:
:s / old / new / g
把当前行old的每次出现改为new,而不只是该行的第一个old。:s命令允许替换串后面带有选项,上面语法中的g代表全局(g选项影响一行中的每个模式,不要把它与影响文件中所有行的:g命令混淆)
通过在:s命令前加上地址前缀,可以把它的范围扩展到多行。例如下面命令把50行到100行的old的每次出现都改为new:
:50, 100 s / old / new / g
下面的命令把整个文件中的old的每次出现都改为new:
:1, $s / old / new / g
我们知道%等价于1,$,所以上行命令也可以这样写:
:% s / old / new / g

确认替换

使用搜索替换命令有时候会出错,而得到不想要的结果。所以小心并确认文件中需要修改的内容是一个明智的做法
在替换命令尾部加上c (confirm用于确认),在替换每个old前都会提示并确认:
:1, 30 s /old/new/ gc
将会出现提示replace with hehe (y/n/a/q/l/^E/^Y)?  
y替换,n不替换,a替换所有,q放弃,l替换第一个并进入插入模式,^E和^Y是提示你用Ctrl+e或Ctrl+y来滚动屏幕的。

上下文相关替换

除了直接使用一个单词(或短语)替换另一个,还有稍微复杂的全局替换语法。这些语法可以对一个模式进行搜索,一旦找到含有模式的行,就可以使用不同与模式的串进行替换,我们把这种替换叫做上下文相关替换。
语法格式如下:
:g /pattern/s/old/new/g    将会把包含pattern的行中,把所有old替换为new
第一个g表示是在文件的所有行上执行的命令,模式pattern识别要发生替换的行。在那些包含模式pattern的行上,ex将把old替换(s)为new。最后的g表示在该行上进行全部替换。
如果用来进行搜索的模式与想要修改的模式相同,那么就不必重复它:
:g/string/s//new/g  等价于  :g/string/s/string/new/g
还要注意:
:g/string/s//new/g  也等价于 :% s/string/new/g
可以用第二种方式少输一些字符
回车在vim的输入方法是ctrl+V,会得到^,此时再按回车.会得到^M这个就是回车了
因此把全文件所有str换成str回车的语句是:

: 1,$ s/str/str^M/g

^M用上面的方法输入

1,$表示从1到最后一行,s是switch,g是global

转载于:https://www.cnblogs.com/york-hust/p/3929528.html

vim的全局替换[zz]把字符替换成回车相关推荐

  1. oracle 存储过程字符替换,Oracle存储过程常用字符串处理函数整理

    1.CHR(x): 返回在数据库字符集中与X拥有等价数值的字符.CHR和ASCII是一对反函数.经过CHR转换后的字符再经过ASCII转换又得到了原来的字符 begin -- 打印CHR(73)的值 ...

  2. 安卓最好的浏览器_今日软件 | AI一键抠图、隐私保护工具、全能下载器、安卓启动器、茄子快传、迅雷、批量字符替换、傲游浏览器、全局负一屏...

    今日软件更新 安卓APP 「SHAREit」5.7.18 # 茄子快传,手机文件传输工具 ▾下载:https://lanzoux.com/iyyn4hdfs9c 「QuickEdit」1.7.0 # ...

  3. Vim使用转义字符来实现特殊字符的替换

    Vim中字符替换,举个例子,以全局替换为例 %s/old/new/g 可以实现整篇文档的字符old替换成字符new 但是如果存在特殊字符的替换 %s/*./new/*./g 即要实现字符*.和字符ne ...

  4. Vim查找替换操作 --- 查找和替换

    查找替换 查找和替换是编辑器中最常用的功能之一,在普通编辑器当中查找替换时,你可能需要先移动鼠标在菜单中点击查找的功能,输入查找内容,再点击确认查找.而在vim中,所有的操作只需要敲击几下键盘就行了, ...

  5. Java字符串替换所有指定字符_C++中string替换所有指定字符串的方法

    C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事. 首先明白一个概念,即string替换所 ...

  6. LeetCode简单题之将所有数字用字符替换

    题目 给你一个下标从 0 开始的字符串 s ,它的 偶数 下标处为小写英文字母,奇数 下标处为数字. 定义一个函数 shift(c, x) ,其中 c 是一个字符且 x 是一个数字,函数返回字母表中 ...

  7. bat 两个文本字符替换_数据人必会的Excel|掌握这些文本函数,让你的工作如鱼得水...

    点击上方 蓝字 关注我们 公众号数据万花筒文章配合视频一起学习效果更佳哦,搜索视频号数据万花筒,更多学习视频火热更新中. 除了数值型数据,分析师在分析过程中常常也会接触文本类型的数据,这时候就该文本函 ...

  8. 字符扫描剑指Offer读书笔记之第二章2字符替换Strut2教程-java教程

    每日一贴,今天的内容关键字为字符扫描 给定一个字符串str和一个子串SubStr,如果str面里的空间充足,写一个函数将str面里的字符ch替换成SubStr.书中只是一个特例:将格空替换成%20. ...

  9. 批量替换文本中字符代码-python3

    Excel的批量替换的痛点在于只能每次单次替换一个,利用脚本可以批量同时替换多个字符.首先需要建立replace_new.txt写入你所需要替换的文本,如: "origin    new A ...

最新文章

  1. 关于学生信息录入(文件操作)的心得体会
  2. expdp oracle 并行_关于Expdp/Impdp 并行导入导出详细测试结果和并行参数的正确理解!!...
  3. 大学python教材实验七字典与集合答案_2018-08-28 day7 python基础 字典和集合(含作业)...
  4. clion修改选中行的背景颜色
  5. 2纳米芯片问世!芯片性能要起飞?!
  6. cs106a编程方法学作业解答(3)
  7. Linux进程调度器-基础
  8. 动态规划算法之:最长公共子序列 最长公共子串(LCS)
  9. linux下caffe-ssd在cuda10+python3.6下编译,训练VOC数据集和测试
  10. 嵌入式工程师有发展前途吗?这是我看过最靠谱的回答
  11. 面向对象——私有成员
  12. JMeter基础 —脚本录制工具Badboy介绍
  13. 电脑无法复制粘贴怎么办的解决方法
  14. DOM是什么?(超详细解释)
  15. 小米组织架构调整:雷军兼任中国区总裁,王川组建大家电部发力白电市场
  16. 这几个专业考上研再考公务员更有优势!
  17. 暴走英雄坛服务器维护,《暴走英雄坛》4月29日更新公告
  18. VMware安装Linux详细教程
  19. 【U8+】数据库清空U8+admin密码
  20. 睡眠手环APP开发上线

热门文章

  1. python两个不同变量相加_Python:是否可以链接属于两个不同类的两个变量?
  2. 隐藏ajax的调用地址,c# – ASP.NET jQuery Ajax调用代码隐藏方法
  3. 加速SaaS规模化演进,餐道基于K8s的云上创新底座
  4. 授予数据库账号dba权限_从自建Oracle迁移至云原生数据仓库AnalyticDB PostgreSQL
  5. 小米air耳机重新配对_小米发布 399 元真无线蓝牙耳机,除了小爱同学还支持其他手机语音助手...
  6. java五子棋悔棋代码_小猿圈前端编写JS五子棋游戏
  7. linux的mysql服务器密码忘了,怎么解决?
  8. ubuntu版php开发工具,Ubuntu 中搭建 LAMP 及 php 开发工具
  9. python类属性描述_如何描述Python对象,以及属性、标识、类型和值之间的关系?...
  10. 南瑞变压器保护装置说明书_深圳宝安变压器维修公司