本文出自   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回车的语句是:

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

^M用上面的方法输入

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

vim的全局替换[zz]&把字符替换成回车的更多相关文章

  1. vim的全局替换

    本文出自   http://blog.csdn.net/shuangde800 本文是在学习<使用vi编辑器, Lamb & Robbins编著>时在所记的笔记. 本文内容: 基本 ...

  2. 在VIM中进行快速的查找和替换

    VIM是被誉为非常高效的文本编辑软件.但是掌握并高效的使用是件有难度的事情.在VIM中进行快速的查找和替换是提高VIM使用效率的重要方法.下面是我在阅读VIM用户手册时整理的一些资料: 行内搜索. f ...

  3. js中字符替换函数String.replace()使用技巧

    定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 语法 stringObject.replace(regexp/substr,replac ...

  4. vi中如何替换某字符成“回车”?

    vi中如何替换某字符成“回车”? 在 vi 中::s/,/^M/g (you need to type CTRL-V <CR> to get a ^M here)VIM - Vi IMpr ...

  5. Vim高手,从来不用鼠标2——替换、撤销、缩进、查找

    本文章原创首发于公众号:编程三分钟 vim 替换.撤销.缩进.查找 上一次我们掌握了移动.跳转.定位.操作(删除.复制.粘贴),基本使用vim脱离鼠标完全是可以做到的了.速记如下: 移动: h,l,j ...

  6. strtr和str_replace字符替换函数

    (一)strtr是字符替换函数 (1)单个字符替换: <?php echo strtr("abba", "ab", "10"),&qu ...

  7. AC日记——字符替换 openjudge 1.7 08

    08:字符替换 总时间限制:  1000ms 内存限制:  65536kB 描述 把一个字符串中特定的字符全部用给定的字符替换,得到一个新的字符串. 输入 只有一行,由一个字符串和两个字符组成,中间用 ...

  8. SQL 字符替换

    --匹配所有字符替换 )),'被替换','替换') --匹配给定位子替换 update 表名 set 列=stuff(列名,从一开始数位数,往后数几位,替换)

  9. Oracle的字符替换函数translate用法

    参考文档如下:http://www.banping.com/2009/05/18/oracle_function_translate/ Oracle提供了一个字符替换函数translate,不同于re ...

随机推荐

  1. tail -f 和tail -F的区别

    http://flume.apache.org/FlumeUserGuide.html flume抓取 exec 的command 官网有如下建议:

  2. python 3使用binascii方法的报错解决

    环境是python 3 问题: 使用binascii方法一直出现报错TypeError: a bytes-like object is required, not 'str' #coding: utf ...

  3. SCD Type2 in ODI

    缓慢变化维(Slowly changing Dimensions)指的是维表中的维度字段值会随着时间或业务调整,而在后续的分析中,历史数据仍然要使用旧的维度值,新的数据会使用当前维度值.在数据仓库建设 ...

  4. 如何快速的将一个str转换为list

    # -*- coding: cp936 -*- #python 27 #xiaodeng #如何快速的将一个str转换为list str='python' print list(str)#['p', ...

  5. Resources.class.getResourceAsStream 获取配置的方法

    转载:https://blog.csdn.net/dwl764457208/article/details/78593005 有空可以看这个: 类加载器与 Class.getResourceAsStr ...

  6. windows 10 更新失败及应用商店重装问题解决记录

    简单的记录一下这次遇到的问题及解决办法. 使用的windows 10 企业版一直不能更新成功,各种办法都试过了,都是失败然后回退. 这次直接下载了1709的映像进行升级安装的,因为我的是双系统,升级安 ...

  7. mysql基础拓扑图

    存在的意义,就是体验差异! 01.mysql架构图 02.账户认证流程 03.mysql逻辑结构

  8. Window10激活

    Windows10激活,通过kms激活. 01.安装对应版本的秘钥 专业版:W269N-WFGWX-YVC9B-4J6C9-T83GX 企业版:NPPR9-FWDCX-D2C8J-H872K-2YT4 ...

  9. 在子线程中发送短信,静态注册SentMsgReceiver。

    1. 应该在子线程中执行发送短信的操作. 如果没有在子线程中发送短信会出现错误:点击发送短信之后,立即跳转到其他界面,那么这次发送短信可能就会失败! 请注意往子线程方法中传入外部的实参必须由final ...

  10. 20 道 Spring Boot 面试题

    转自:微信公众号:Java技术栈(id: javastack) 面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段 ...