Vim 中进行文本替换
Vim 中进行文本替换
格式
用法
:[range]s/from/to/[flags]tips:
[]表示该内容可选参数
from需要替换的字符串(可以是正则表达式)to替换后的字符串range作用范围空 : 默认为光标所在的行
. : 光标所在的行
n : 第 n 行(1表示第 1行,10表示第 10行),可使用:set nu 显示vim行号
$ : 最后一行
n,m : n~m 行(22,33表示 22~33行)
% : 所有行(与 1,$ 等价)
tips: 上面的所有
range都可以组合起来使用;表示方法都可以通过+、-操作来设置相对偏移量;且都可以套入n,m格式来设置范围,如:.+1: 当前光标所在行的下面一行;$-1: 倒数第二行;1,.: 第1行 到 当前行;.,$: 当前行 到 最后一行;1,$: 第1行 到 最后一行(或者用符号%表示);.+1,$-1: 光标行下一行 到 倒数二行;
flags替换标记空 : 替换第一个匹配项
c : confirm,每次替换前都会询问
e : 不显示error
g : globe,不询问,整个替换
i : ignore,即不区分大小写(默认为大小写敏感即I)
& : 重复使用最后的参数(效果和 g 类似)
n : 不会替代任何东西(提示执行该操作所影响的行数)
tips: 上面的所有
flags都可以组合起来使用,如:gc表示匹配范围内全部替换,并且每次替换前都会询问;gi表示匹配范围内全部替换,并且不区分大小写;gin表示不替换,并且提示匹配范围中不区分大小写所影响的行数;
实例

图例
:s/javascript/python/g- 在当前行,用python替换javascript
g标志表示全局
:%s/css/sass/g- 替换全局内容
:5,12s/dev/pro/g- 替换 第5 至 12行 的内容
:.,+2s/bug/feature/g- 对
当前行(.)和下两行(+2)分别进行修改
- 对
:g/^review/s/needs/donw/g- 将每行开始为'review'的'needs'改为'donw'
:g/review/s/needs/donw/g- 将存在'review'的每行'needs'改为'donw'
:%s/charome/firefox/gc- 全局替换,每次替换前
询问
- 全局替换,每次替换前
:%s/text/Editor/gi- 全局替换,并且
忽略关键字大小写
- 全局替换,并且
:%s/\<static\>/dynamic/g- 只改变完全匹配的
整个单词
- 只改变完全匹配的
:%s/remember/me/&- 重复使用最后的参数(效果和 g 类似)
:%s/remember/me/n- 这个命令并
不替代任何东西。它告诉我们,如果我们运行这个命令,会有多少个出现的词受到影响
- 这个命令并
进阶
分隔符转换(几乎所有符号都可)
- 将网址中的
/替换成\(\需要转义):%s-/-\\-g:%s#/#\\#g
- 将网址中的
特殊符号转义
- 将所有的
.替换成0:%s/\./0/g
- 将所有的
替换正则选中内容
- 日期替换(将所有日期替换为2022-4-1)
:%s/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/2022-4-1/g
- 日期替换(将所有日期替换为2022-4-1)
变量暂存并使用
将所有
hello world加上{}号:%s/\(hello world\)/{\1}/g
将所有日期加上
''号:%s/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/'\1'/g
tips:
[0-9]表示 0 到 9 之间的任一个数字,这是正则中表示数字集合的标准写法。{n}表示将此符号前面的元素重复 n 遍,所以 [0-9]{4} 就表示一个四位数的数字。- 如果在匹配方案中用到了
(),则表示要暂存括号中所匹配到的内容,而\1表示替换为暂存的内容(如果存在多个括号组,则后面要通过编号来依次对应,如 \1、\2、\3 等)
Vim 中进行文本替换的更多相关文章
- vim中替换命令
在VIM中进行文本替换: 1. 替换当前行中的内容: :s/from/to/ (s即substitude) :s/from/to/ : 将当前行中的 ...
- Linux环境下shell和vim中乱码原因及消除办法
shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...
- 再谈vim中多窗口的编辑
参考:http://blog.csdn.net/shuangde800/article/details/11430659 很好 鼠标在各个窗口间循环移动: ctrl+w+(小写的 hjkl), &qu ...
- 在VIM中进行快速的查找和替换
VIM是被誉为非常高效的文本编辑软件.但是掌握并高效的使用是件有难度的事情.在VIM中进行快速的查找和替换是提高VIM使用效率的重要方法.下面是我在阅读VIM用户手册时整理的一些资料: 行内搜索. f ...
- vim中 set 用法设置
vi set用法from google search一.常用收集如下:(vi set)set autoindent 在插入模式下,对每行按与上行同样的标准进行缩进,与shiftwidth选项结 ...
- vim中输入tab符
今天在写Makefile时各种出错.后来发现是all:的下一行,make前面必须是tab符,不能是空格. 但是vim中只要按tab就会自动转换成4个空格.平时编程需要,也不便把这个设置取消. 查了下, ...
- vim 中 也可以 直接安装 emmet 直接使用zen coding 生成 l指定个数的 lorem ipsum文字.
超链接的写法: 当作为链接的文字, 比较长时, 整个作为链接 就显得不是 很适合. 可以取其中的某一个单词 作为 超链接的 关键字:如: click here to continue emmet中如何 ...
- vim中添加molokai.vim 配色安装
无意中发现知乎中讨论的话题: 你认为最好看的 Vim 配色方案(color scheme)是哪款? 网友回答 排在第一位的是:molokai 啊,最经典的配色 既然molokai这么经典,当然要用了. ...
- 解决vi/vim中粘贴会在行首多很多缩进和空格的问题
解决vi/vim中粘贴会在行首多很多缩进和空格的问题 secureCRT会将你原来的文本原封不动的按照字符串的样式发送给服务器.所以当你的服务器上的vim设置为autoindent的话,在i模式下,那 ...
随机推荐
- bzoj4671 异或图(斯特林反演,线性基)
bzoj4671 异或图(斯特林反演,线性基) 祭奠天国的bzoj. 题解时间 首先考虑类似于容斥的东西. 设 $ f_{ i } $ 为至少有 $ i $ 个连通块的方案数, $ g_{ i } $ ...
- bzoj4044/luoguP4762 [Cerc2014]Virus synthesis(回文自动机+dp)
bzoj4044/luoguP4762 [Cerc2014]Virus synthesis(回文自动机+dp) bzoj Luogu 你要用ATGC四个字母用两种操作拼出给定的串: 1.将其中一个字符 ...
- 中国软件杯---电力客户行为分析---图表联动echarts-demo(flask)
中国软件杯---电力客户行为分析---图表联动echarts-demo(flask) 题目链接(可下载原始CSV数据集):http://www.cnsoftbei.com/plus/view.php? ...
- fiber核心(react 16)?
旧: 浏览器渲染引擎单线程, 计算DOM树时锁住整个线程, 所有行为同步发生, 有效率问题, 期间react会一直占用浏览器主线程,如果组件层级比较深,相应的堆栈也会很深,长时间占用浏览器主线程, 任 ...
- Ajax是什么?包含什么技术?有什么作用?
Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写. Ajax 尝试建立桌面应用程序的功能和交互性,与不断更新的 Web 应用程序之间的桥梁.不 ...
- 什么是feigin?它的优点是什么?
1.feign采用的是基于接口的注解2.feign整合了ribbon,具有负载均衡的能力3.整合了Hystrix,具有熔断的能力使用:1.添加pom依赖.2.启动类添加@EnableFeignClie ...
- 什么是 AOP?
在软件开发过程中,跨越应用程序多个点的功能称为交叉问题.这些交叉问题与 应用程序的主要业务逻辑不同.因此,将这些横切关注与业务逻辑分开是面向方 面编程(AOP)的地方.
- 调用高德地图web api 规划路线
实现地图输出,出发地与目的地路线,效果如下 具体代码如下 <!doctype html> <html> <head> <meta charset=" ...
- React 和 ES6 工作流之 Webpack的使用(第六部分)
这是React和ECMAScript2015系列文章的最后一篇,我们将继续探索React 和 Webpack的使用. 下面是所有系列文章章节的链接: React . ES6 - 介绍(第一部分) Re ...
- SVG中的坐标系统和坐标变换
视野和世界 2D绘图中很多人会有一个误区,就是我绘图的区域是一个矩形区域.无论新建一个画布还是创建了一个容器,心里都想象里面有一个矩形区域.其实,在SVG当中,矩形区域只是视野,是我们看到的部分.实际 ...